tqing

我的短期目标: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)
查看代码

5,必须参数与关键字参数

①,必须参数 实参 形参

②,关键字函数(可以不用考虑传入参数的顺序)

例:

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) #报错 定义多少形参就要传递多少实参
查看代码

6,默认参数

①默认参数即使函数的某些参数赋有初值 (非默认参数必须放置到默认参数之前)

例:

 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 #默认参数必须放到参数列表后面  即必须参数不能放置到默认参数后面
查看代码

 

相关文章: