07.函数
# 函数 def fun1(): print(123) fun1() # 123
参数:
# 参数 def fun2(obj): print(obj) obj += obj
参数传递:
# 传递不可变类型的代表值传递 str1 = 'abc' print(str1) # abc fun2(str1) # abc print(str1) # abc # 传递可变类型的代表引用传递 list1 = ['a', 'b', 'c'] print(list1) # ['a', 'b', 'c'] fun2(list1) # ['a', 'b', 'c'] print(list1) # ['a', 'b', 'c', 'a', 'b', 'c']
关键字参数:
# 关键字参数 fun2(obj=12) # 12
为参数设置默认值:
# 为参数设置默认值 def fun3(obj, p='123'): print(str(obj) + p) fun3(12) # 12123 # 显示fun3()函数的默认值参数的当前值 print(fun3.__defaults__) # ('123',)
可变参数:
# 可变参数 # 一种是*args,另一种是**kwargs # *args:表示接收任意多个实际参数并将其放到一个元组中 def printi(*args): print(args, type(args)) printi('a') # ('a',) <class 'tuple'> printi('a', 'b', 'c', 'd') # ('a', 'b', 'c', 'd') <class 'tuple'> # 如果使用一个已经存在的列表作为可变参数,在字典名称前加* list11 = ['a', 'b', 'c', 'd'] printi(*list11) # ('a', 'b', 'c', 'd') <class 'tuple'> # **kwargs:表示接收任意多个类似关键字参数一样显示赋值的实际参数,并将放到一个字典中 def printii(**kwargs): print(kwargs, type(kwargs)) printii(a='A', ) # {'a': 'A'} <class 'dict'> printii(a='A', b='B', c='C', d='D') # {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D'} <class 'dict'> # 如果使用一个已经存在的字典作为可变参数,在字典名称前加** dict1 = {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D'} printii(**dict1) # {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D'} <class 'dict'>
返回值:
# 返回值 def fun1(): return 123 print(fun1()) # 123
变量的作用域:
# 变量的作用域 msg_g = 'hi' # 全局变量 def fun1(): msg = 'hello' # 局部变量msg print(msg) # hello print(msg_g) # hi fun1() # print(msg)#NameError: name 'msg' is not defined print(msg_g) # hi
匿名函数(lambda):
# 匿名函数(lambda) # res = lambda[arg1,]:exp # res:用于调用lambda表达式 # [arg1,]:可选参数,指定参数列表,多个参数间用,分割 # exp:必选参数,用于指定一个实现具体功能的表达式 import math # 计算圆的面积 res = lambda r: math.pi * r * r print(res(10)) # 314.1592653589793