一、函数定义、返回值、递归函数
1 #----------函数的好处----------
2 #简化代码:组合代码块,变成整体,方便调用
3 #函数不调用,不会被执行
4 #提高代码复用性
5
6 #----------定义无参函数----------
7 # def hello():
8 # print("Hello!")
9
10 #----------定义带参函数----------
11 # def hello(file_name,content=''):#形参
12 # # 函数里面的变量都是局部变量
13 # f = open(file_name,'a+',encoding='utf-8')
14 # # return 222 #一单遇到return,立即结束函数,后面不再执行
15 # if content:
16 # f.write(content)
17 # res= ''
18 # else:
19 # f.seek(0)
20 # res = f.read()
21 # f.close()
22 # return res #返回值
23 # #调用函数
24 # users = hello('cm.txt','123')#实参
25
26 #----------形参和实参#----------
27 #形参就是函数接收的参数,而实参就是你实际传入的参数
28 #函数的四种形参类型:固定参数(位置参数、默认参数)、非固定参数(可变参数、关键字参数)
29 #位置参数,必填参数,按照参数的位置来进行传参,或者calc(y=1,x=2)这种关键字传参来调用
30 #默认值参数,不是必填的 def hello(file_name,content='nnn'),如果有值传过来用传过来的值,没有值的话用‘’
31 #可变参数,def test(a,b =1,*args) test('a','b','c','d') 元组类型
32 def test(a,b =1,*args):#可变值参数
33 print(a)
34 print(b)
35 print(args) #元组类型,输出所有出去a,b对应的值
36 # print(args[0])
37 test('a','b','c','d')
38
39 #关键字参数,def test2(a,**kwargs):test2('cm',name = 'cm',sex = 'F')字典,必须同时传入key value,可以同时传多个,用的频率也比较少
40 def test2(a,**kwargs):
41 print(a)
42 print(kwargs)
43 test2('cm',name = 'cm',sex = 'F')
44
45 #----------函数的返回值----------
46 #如果函数要有返回值,必须return
47 #如果函数没有返回值,返回none
48 #函数返回值可有可没有
49 #函数一旦遇到return,结束函数
50 #
#----------函数有多个返回值是,返回元组类型----------
def hello(a,b,c,d):
return a,b,c,d
print(hello('a','b','c','c')) #('a', 'b', 'c', 'c')
51 #----------全局变量和局部变量---------- 52 #注意全局变量局部变量 53 #函数内部声明的变量只能内部使用 54 #全局变量如果要在函数中修改的话,需要加global关键字声明,如果是list、字典和集合的话,则不需要加global关键字,直接就可以修改 55 56 # a =500 #全局变量 57 def test(): 58 global a #声明全部变量,可以修改全部变量的值 59 a = 400 60 61 def test1(): 62 c = a+5 63 return c 64 test() 65 res = test1() #如果不写调用test(),会找不到a,报错 66 print(res) 67 68 69 #----------递归函数---------- 70 def test1(): 71 num = int(input('please enter a number:')) 72 if num % 2 == 0: # 判断输入的数字是不是偶数 73 return True # 如果是偶数的话,程序就退出了,返回true 74 print('不是偶数请重新输入!') 75 return test1() # 如果不是偶数的话继续调用自己,输入值 76 print(test1()) # 调用test