C基础入门Python(四)——函数
一、创建函数
1、def语句创建函数
- def 函数名(参数表)
def hello(your_name):
#your_name表示你的名字,格式是字符串
return 'Hello '+your_name
print(hello('Zhang San')) #result:Hello Zhang San
Python的参数不需要声明数据类型,程序员可能因不清楚参数的数据类型而出错,所以一般在函数开头注明函数的用途、输入和输出。
- return语句可以有多个返回值
return a,b
2、lambda语句创建匿名函数,函数没有名字
-
lambda 函数参数:返回值
g=lambda x:x+1
print(g(1)) #result:2
-
lambda定义的是单行函数,如果需要复杂的函数,应使用def语句
-
lambda参数列表可以包含多个,用逗号分隔开
- lambda语句只有一个返回值
- lambda仅含一条表达式
二、函数参数
1、位置或关键字参数
def fun2(a,b,c):
print(a,b,c)
fun2(1,2,3) #位置参数
fun2(a=1,b=2,c=3) #关键字参数,参数间没有顺序关系
fun2(1,c=3,b=2) #混合使用时,位置参数必须在关键字参数的前面
- 函数参数列表可以定义默认参数,但必须在没有默认参数的后面
def fun2(a,b,c=1):
print(a,b,c)
2、任意数量的位置参数(需要一个星号前缀)
def fun4(str1,*numbers):
print(numbers)
fun4(1,2,3,4) #result:(2, 3, 4)
在传递参数时,可在原有参数的后面添加0个或多个参数,这些参数将会被放在元组内,并传入参数。其定义在位置或关键字参数之后,任意数量的关键字参数之前。
3、任意数量的关键字参数之前(需要两个星号前缀)
def fun4(str1,**numbers):
print(numbers)
fun4(1,b=2,c=3,d=4) #result:{'b': 2, 'c': 3, 'd': 4}
这些参数会被放到字典内并传入到函数。
三、可变对象与不可变对象
- 不可变对象:数值类型,字符串,元组
- 可变对象:字典,列表
- 希望赋值时可变对象不进行引用,而是重新分配地址空间并将数据复制,可以利用copy模块。
import copy
list1=[1,2,['a','b']]
list2=list1
list3=copy.copy(list1)
list4=copy.deepcopy(list1)
list1.append(3)
list1[2].append('c')
print('list1=',list1) print('list2=',list2) print('list3=',list3) print('list4=',list4)
#result:
#list1= [1, 2, ['a', 'b', 'c'], 3]
#list2= [1, 2, ['a', 'b', 'c'], 3]
#list3= [1, 2, ['a', 'b', 'c']]
#list4= [1, 2, ['a', 'b']]
四、作用域
- 函数内部即可以访问局部变量,也可以访问全局变量。
- 如果局部变量和全局变量重名,则屏蔽全局变量
网友评论