【我要学python】函数的系统学习
分类:
IT文章
•
2022-06-06 21:46:08
我的短期目标:python+CTF reverse 一起加油!
#1,函数介绍
1,功能性 函数目的
2,隐藏性 (封装) (避免写重复代码)
例:
1 #round为保留小数的函数
2
3 a = 3.1415
4 result = round(a,2)
5 printf(result)
6
7 #输出:3.14
查看代码
#2,函数的使用
1,参数列表可以没有
2,函数中无return 代表返回None(空值)
例:
#1,实现两个数字的相加
#2,打印输入的参数
def add(x,y)
result = x + y
return result
def print(code)
printf(code)
add(1,1)
print('python') #自己调用自己 递归次数太多 报错
#如何修改python递归995次数限制
import sys
sys.setrecursionlimit(1000000) #修改限制为100万次递归次数
#所以 函数的定义不要与python内置的关键字相同
查看代码
1 def add(x,y)
2 result = x + y
3 return result
4
5 def print_code(code)
6 printf(code)
7
8 a = add(1,1)
9 b = print_code('python')
10
11 print(a,b)
12
13 #输出
14 python #调用到了print_code 所以会首先输出print(python)
15 2
16 None #无返回值 所以输出None
查看代码
3,返回值(可多个)
例:
1 def damage(skill1,skill2):
2 demage 1 = skill1 * 3
3 demage 2 = skill2 * 2 + 10
4 return damage1,damage2
5
6 damages = damage(3,6)
7
8 print(type(damages)) #输出为tuple类型 说明在return时不用强制加()
9
10 #调用时
11 print(damages[0],damages[1])
12
13 #不如序列解包 即用 两个变量接分别收 demage函数的返回值
14
15 dagame_skill1,damage_skill1 = damage(3,6)
查看代码
4,序列解包(接收返回值)和链式赋值
1 #链式赋值
2 a = 1
3 b = 2
4 c = 3
5 a,b,c = 1,2,3
6 a=b=c=1
7
8 d = 1,2,3
9 print(type(d)) #<class ' tuple '>
10
11 a,b,c = d #序列解包
12
13 a,b = [1,2,3] #too many values to unpack(expected 2)
查看代码
1 def add(x,y):
2 result = x + y
3 return result
4
5 c = add(y=3,x=2)
6
7 c = add(x = 2) #报错 定义多少形参就要传递多少实参
1 def prinf_student_files(name,gender='男生',age=18,college='人民路')
2 print('我叫' + name)
3 print('我是' + gender)
4 print('我今年' + str(age))
5 print('我在' + college +'上学')
6
7 print_student_files('大头')
8 #输出
9
10 我叫大头
11 我是男生
12 我今年18岁
13 我在人民路上学
14
15 #默认参数必须放到参数列表后面 即必须参数不能放置到默认参数后面
16
17 #如果要修改默认参数的值,全部用关键字参数传值的方式(XXX=XXX)修改,不能混用关键字参数传值与必须参数传值
18
19 def cs(a,c,b=2):
20 print(a,b,c)
21 cs(a=5,b=6,c=7)
22 #输出 5 6 7
23
24 def cs(a,c,b=2):
25 print(a,b,c)
26 cs(5,b=6,7)
27 #报错