一、函数
1. 给一段程序起一个名字,用这个名字来执行一段程序,反复使用
2. 定义:def 函数名(参数1,参数2):
3. 举例
# 1-无参数、无返回值的函数
def sayHi():
print("hi!")
sayHi() #hi!
# 2-有参数,无返回值
def printSumOfTwo(a,b):
c=a+b
print(c)
printSumOfTwo(1,2) #3
# 3-有参数、有返回值
def repeatStr(str,times):
repeated_string=str*times #神奇神奇
return repeated_string
print(repeatStr("可爱",3)) #可爱可爱可爱
二、局部变量&全局变量
1. 函数外部定义的是全局,内部定义的是局部变量
2. 在函数内定义一个全局变量:global a
三、参数
1. 默认参数
# 3-有默认参数、有返回值
def repeatStr(str,times=1):
repeated_string=str*times #神奇神奇
return repeated_string
print(repeatStr("可爱",3)) #可爱可爱可爱
print(repeatStr("默认")) #默认
注意:若只有一个参数时,默认把第一个参数传给第一个参数,从左到右。
规则:定义函数时,默认参数的一定要摆在没有默认参数的后面,有默认值的参数后面必须全是默认参数,例如
def add(a,b=1,c=2) 正确对的
def add(a=1, b c=2) 不对不对不对
2. 关键字参数: 指明要给某个参数赋值
# 5-关键字参数
def printNum(a,b=2,c=3):
print('a=',a,' b=',b,' c=',c)
printNum(1,5,6) #按默认参数的规则赋值:a= 1 b= 5 c= 6
printNum(1,c=30) #b的值是默认的,点明了c赋值为30:a= 1 b= 2 c= 30
printNum(c=40,a=11) #既然都挑明了要给谁赋值,顺序就不重要了:a= 11 b= 2 c= 40
3. VarArgs参数:不知道到底会有多少个参数
*nums:传入的一组值
**words:以关键字参数赋值形式转入的参数
print('------------VarArgs参数--------------')
def printPara(fpara,*nums,**words):
print('fpara : '+str(fpara))
print('*nums : '+str(nums))
print('**words : '+str(words))
printPara('fun',1,2,3,4,word1='King',word2='Queen')
# 输出:
# fpara : fun
# *nums : (1, 2, 3, 4) 当做元组来处理
# **words : {'word1': 'King', 'word2': 'Queen'} 当做字典来处理