函数

作者: 雪脩 | 来源:发表于2020-01-27 00:13 被阅读0次

一、定义函数

使用关键字def定义函数。

def get_name():
  """打印名字"""
  print("Hello")

get_name()

get_name为函数名,在get_name( ):后面的所有缩进行构成了函数体。而在上面代码中的第二行的文本是被称为文档字符串的注释,描述了函数使用来做什么的。

1. 向函数传递信息

可以在函数定义def get_name( )的括号内添加username,通过这里添加username,就可以让函数接受给函数指定的值。

def get_name(username):
  """打印名字"""
  print(username)

get_name('jie')

2. 实参和形参

在函数中,定义函数时的参数为形参,调用函数的时候传递的参数为实参。如get_username的代码中,username为形参,而'jie'为实参。

二、传递实参

向函数传递实参的方式有很多种,可使用位置实参,这要求形参的顺序和实参的顺序相同;也可以使用关键字实参,其中每个实参都由变量名和值组成;还可使用列表和字典。

1. 位置实参

def get_name(first, last):
  """打印姓名"""
  firstname = first
  lastname = last
  print(firstname + " " + lastname)
 
get_name("bill", "su")

位置实参的顺序很重要,如果位置实参的顺序到了,在函数中的形参的值也会颠倒。

2. 默认值

在编写函数的时候,可以给每一个形参一个默认值。在调用函数时,如果给形参提供了实参,则将使用指定的实参值,否则,就使用形参的默认值。

def get_name(username = 'Tom'):
  """打印名字"""
  print(username)

get_name()

三、返回值

函数可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值。在函数中,可使用==return==语句将值返回到调用函数的代码行

1. 返回简单值

def get_name(first, last):
  """打印名字"""
  firstname = first
  lastname = last
  full_name = firstname + " " + lastname
  return full_name

full_name = get_name('bill', 'su')
print(full_name)

2. 让实参变成可选的

有时候,需要让实参变成可选的,这样使用函数的人就只需要在必要时才提供额外的信息。可使用默认值来让实参变成可选的。

def get_name(first, last = ''):
  if last:
    print(first + last)
  else:
    print(first)
    
get_name('bill')

3. 返回字典

函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。

def get_name(first, last):
  person = {'first': first, 'last': last}
  return person

musician = get_name('jim', 'hen')
print(musician)

四、传递列表

函数可以传递列表,这种列表可以包含的可能是名字、数字或更复杂的对象(如字典)。将列表传递给函数后,函数就能直接访问其内容。

def greet_name(names):
  for name in names:
    msg = "Hello" + " " + name.title() + "!"
    print(msg)
    
user_names = ['han', 'ty', 'jim']
greet_name(user_names)

1. 在函数中修改列表

将列表传递给函数后,函数就可以对其进行修改。在函数中对这个列表所做的任何修改都是永久性的。

def del_name(names):
  names.pop()
    
names = ['han', 'ty', 'jim']
del_name(names)
print(names)

2. 禁止函数修改列表

可以向函数传递列表的副本而不是元件,这样函数所做的任何修改都只影响副本。

def del_name(names):
  names.pop()
  print("修改后的列表副本:")
  print(names)
    
names = ['han', 'ty', 'jim']
del_name(names[:])
print("调用函数后的列表:")
print(names)

五、传递任意数量的实参

下面的函数只有一个形参*names,但不管调用语句提供了多少实参,这个形参都将它们统统纳入囊中。

def names(*names):
  print(names)

names('jim')
names('jim', 'make', 'len')

形参名*names 中的星号让Python创建一个名为names的空元组,并将收到的所有值都封装到这个元组中。函数体内的print语句通过生成输出来证明Python能够处理使用一个值调用函数的情形,也能处理使用三个值来调用函数的情形。

1. 结合使用位置实参和任意数量的实参

如果让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参收集到最后一个形参中。

def make_pizza(size, *toppings):
  print("\nmakeing a"+ str(size) + 
        "-inch pizza with the folling topping")
  for topping in toppings:
    print("-"+ topping)
    
make_pizza(16, 'peppersion')
make_pizza(12, 'pepper', 'green peppers')

3. 使用任意数量的关键字实参

有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键-值对——调用语句提供了多少就接受多少。

def build_profile(first, last, **user_info):
  profile = {}
  profile['first_name'] = first
  profile['last_name'] = last
  
  for key, value in user_info.items():
    profile[key] = value
    
  return profile

user_profile = build_profile('albert', 'jim',
                             location='princetion',
                             field='physics')
print(user_profile)

形参**user_info中的两个星号让Python创建一个名为profile的空字典,用于存储用户简介。

六、将函数存储在模块中

函数的优点之一是:使用它们可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解的多。还可以更进一步,将函数文件存储在被称为模块的独立文件中,再将模块倒入到主程序中。import语句允许在当前运行的程序文件中使用模块中的代码。

通过将函数存储在独立的文件中,可隐藏程序代码的细节,将重点放在程序的高层逻辑上。这能够在众多的程序中重用函数。将函数存储在独立文件中后,可与其它程序员共享这些文件而不是整个程序,

1. 导入整个模块

要让函数是可导入的,得先创建模块。模块是扩展名为.py的文件,包含要导入到程序中的代码。

pizza.py
def make_pizza(size, *toppings):
  print("\nmakeing a"+ str(size) + 
        "-inch pizza with the folling topping")
  for topping in toppings:
    print("-"+ topping)
making_pizzas.py
import pizza

pizza.make_pizza(16, 'peppersion')
pizza.make_pizza(12, 'pepper', 'green peppers')

2. 导入特定的函数

还可以导入模块中的特定函数:

from pizza import makez_pizza

通过用逗号分隔函数名,可根据需要从模块中导入任意数量的函数

from module_name import function_0, function_1, function_2

3. 使用as给函数指定别名

如果要导入的函数的名称可能与程序中现有的名称冲突,或者函数的名称太长,可指定简短二独一无二的别名——函数的另一个名称,类似于外号。

from pizza import make_pizza as mp
  
mp(16, 'peppersion')
mp(12, 'pepper', 'green peppers')

4. 使用as给模块指定别名

import pizza as p

p.make_pizza(16, 'peppersion')
p.make_pizza(12, 'pepper', 'green peppers')

5. 导入函数中的所有函数

import语句中的星号让Python将模块pizza中每个函数都复制到这个程序文件中。由于导入了每个函数,可通过名称来调用每个函数与,而无需使用句点表示法。

from pizza import *

make_pizza(16, 'peppersion')
make_pizza(12, 'pepper', 'green peppers')

相关文章

  • Excel(三)

    AND函数 OR函数 NOT函数 IF函数 频率分析函数FREQUENCY

  • if、else if、for、while、repeat函数

    ①if函数 ②else if函数 ③for函数 ④while函数 ⑤repeat函数

  • strsplit、mapply、paste、match函数

    strsplit函数 mapply函数 strsplit函数 mapply函数 paste函数 match函数 第...

  • Oracle中常用函数(SQL)

    Oracle函授有以下几个分类:数字函数、字符函数、日期函数、转换函数、集合函数、分析函数 数字函数: 字符函数:...

  • MySQL函数

    字符函数 数字运算函数 比较运算符和函数 日期时间函数 信息函数 聚合函数 加密函数 流程函数

  • BI-SQL丨AND & OR & IN

    AND函数 & OR函数 & IN函数 AND函数、OR函数和IN函数都可以理解是WHERE函数的补充,当然也可以...

  • Python之函数

    课程大纲 函数定义 函数的参数 函数的返回值 高阶函数 函数作用域 递归函数 匿名函数 内置函数 函数式编程 将函...

  • 函数基本知识

    函数 函数的定义: def 函数名() 函数的调用:函数名() #不能将函数调用放在函数定义上方 函数的文档注...

  • 积分表——不定期更新

    基本初等函数包括: 常函数: 幂函数 指数函数 对数函数 三角函数 反三角函数 I、反函数Ⅱ、复合函数:初等函数(...

  • MySQL基本使用

    函数 常用函数 数学函数 字符串函数 日期函数

网友评论

      本文标题:函数

      本文链接:https://www.haomeiwen.com/subject/rrpsthtx.html