Python3学习笔记-函数

什么是函数

函数就是带名字的代码块,用于完成具体的工作

定义函数

1
2
3
4
5
6
7
def printStr(str): ##函数定义,形参
"""函数内部代码"""
print('函数方法')
return str+"测试啦" #返回值

str = printStr("形参") ##函数调用
print('函数返回值',str)

传递参数

函数定义中可能包含多个形参,因此函数调用中可能包含多个实参。可分为,位置实参,关键字实参

位置实参

调用函数时,Python必须将函数调用中的每个实参关联到函数定义的一个形参,关联的方式就是基于实参的顺序。这种方式成为位置实参;
ps:

  1. 位置实参的顺序很重要,如果实参的顺序不正确,结果会出乎意料

关键字实参

关键字实参是传递函数的名称-键值对,关键字实参让你无需考虑调用中的实参顺序,还可以清除地指出函数调用中各个值的用途。关键字实参的顺序无关紧要,因为pytgon知道各个值存储到哪个形参中。
使用关键字实参时,务必准确地指出函数定义的形参名

1
2
3
4
5
6
def addFun(num1,num2):
print('num1',num1)
print('num2',num2)
return num1+num2

print(addFun(num2=30,num1=20))

参数默认值

ps:

  1. 默认值设置超过两个时,默认值要放在第二个形参上,或者两个形参都有默认值
    1
    2
    3
    4
    5
    6
    def addFun(num1,num2=100):
    print('num1',num1)
    print('num2',num2)
    return num1+num2

    print(addFun(num1=20))

传递任意数量的实参

使用’*形参名’来接收传递进来的任意参数
*toppins 中的星号让Python创建一个名为toppings的空元组,并将受到的所有值都封装到这个元组中。

1
2
3
4
5
def make_pizza(*toppings): 
"""函数体"""
print(toppings,type(toppings))

make_pizza("面粉","榴莲","菠萝")

位置实参与任意数量实参

  1. 如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量的形参放在最后。
    1
    2
    3
    4
    5
    def make_pizza(size,*toppings):
    """函数体"""
    print(str(size)+"寸的pizza材料有",toppings)

    make_pizza(2.3,"面粉","榴莲","菠萝")

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

  1. **表示让Python创建一个空字典,并且将所有名称-值对都封装到这个字典中,可以向反访问其他字典那样访问key,value
1
2
3
4
5
6
7
8
9
10
11
def build_profile(first,last,**otherInfo):
info = {}
info['first'] = first
info['last'] = last
for key,value in otherInfo.items():
info[key] = value

return info


print(build_profile("gavin",'nie',height=165,weight=55))

函数存储在模块中

  1. 导入整个模块

    1
    2
    import buildInfo #导入该文件
    print(buildInfo.build_profile('gavin','nie',height=165)) #调用使用 文件名.方法名
  2. 从模块中导入某个方法

    1
    2
    from buildInfo import build_profile2  #导入buildInfo模块的build_profile2方法
    print(build_profile2('gavin2','nie2',height=180)) #调用使用 方法名
  3. 使用as给函数指定别名

    1
    2
    from buildInfo import build_profile2 as bp #导入buildInfo模块的build_profile2方法,吧build_profile2作别名 bp
    print(bp('gavin2','nie2',height=180)) #调用使用 方法名
  4. 使用as给模块指定别名

    1
    2
    import buildInfo as bi #导入该文件,并重命名bi
    print(bi.build_profile('gavin','nie',height=165)) #调用使用 文件名.方法名
  5. 导入模块中的所有函数

    1
    2
    3
    from buildInfo import *
    build_profile()
    build_profile2()