1. 函数****
1.1. 定义****
一段可以被另外一段代码执行的程序
1.2. 语法****
def 函数名():
函数体--语法
return 需要的返回值
1.3. 调用****
函数名()
# 定义函数*
def test_function():
print('我是一个测试函数')
# 调用函数*
if name == 'main':
test_function()
我是一个测试函数
1.4. 参数****
不传会报错
1.4.1. 顺序传参 必传****
def 函数名(参数1,参数2...)
函数体
函数名(传参1,传参2)
def test_function(name, age):
print('我是一个测试函数')*
*if name == 'main':
test_function('Alison', '25')
1.4.2. 关键字参数 - 必传****
def 函数名(参数1,参数2...)
函数体
函数名(参数1=传参1,参数2=传参2)
def test_function(name, age):
print('我是一个测试函数')
if name == 'main':
test_function(name='Alison', age='25')
1.4.3. 不定长参数 必传****
1.4.3.1. args***
可以传任意多个参数进来
并以tuple接收
def test_function(*args):
print(args)
if name == 'main':
test_function('name','age','test')
('name', 'age', 'test')
1.4.3.2. kwargs**
不确定需要传递多少个参数的时候,使用关键字参数的形式传递
并以dict接收
def test_function(**kwargs):
print(kwargs)
if name == 'main':
test_function(name='Alison', age=25, sex='女')
{'name': 'Alison', 'age': 25, 'sex': '女'}
1.4.3.3. args,kwargs*
位置必须args在前,kwargs在后
分别以tuple、dict接收
def test_function(*args,**kwargs):
print(args)
print(kwargs)
if name == 'main':
test_function(1,2,3,4,5,name='Alison', age=25)
(1, 2, 3, 4, 5)
{'name': 'Alison', 'age': 25}
1.4.4. 默认参数****
函数定义的时候就给一个默认值
如果函数调用的时候传入了参数,就是用传入的参数;反之,则使用默认参数
默认参数可以不传递
def test_function(name='Alison',age=25):
print(name,age)
if name == 'main':
test_function('Taylor')
Taylor 25
1.4.5. 拆包****
用于参数传递
1. *
2. **
*args
def test_function(*args):
print(args)
list = [1,2,3,4]
test_function(*list)
(1, 2, 3, 4)
**kwargs
def test_function(**kwargs):
print(kwargs)
dict = {'key1':'val1','key2':'val2'}
test_function(dict) #相当于('key1'='val1','key2'='val2')
{'key1': 'val1', 'key2': 'val2'}
1.5. return返回值****
如果需要返回值,就写return返回内容
反之,就不写,默认返回none
Return是函数执行结束的标识,函数执行遇到return语句,就会结束执行
def test_function(name):
return name
if name == 'main':
result =test_function('张三')
print(result)
张三
def test_function():
for i in range(10): #0~9*
***print(i)
if i == 3:
return 0
elif i == 4:
print('test')
test_function()
0
1
2
3
1.6. 变量的作用域****
1.6.1. 局部变量****
定义在函数里面,仅限包含的函数可以使用
1.6.2. 全局变量****
定义在函数外面,供全局函数使用
num = '全局变量'
def test_function1():
num = '局部变量'
print(num)
def test_function2():
print(num)
test_function1()
test_function2()
局部变量
全局变量
1.6.3. Global(了解)****
(更好用的方法是 类:类属性)
将局部变量设置成全局变量
语法:global 变量名
注意:只能定义,不能直接赋值,否则会报错
def function():
global test_str
test_str = 'test'
print(test_str)
def function2():
function() #只有在函数运行起来才会在内存中去创建变量,否则代码没运行,直接调用会出错
print(test_str)
function2()
test
test
1.7. 常用函数****
1.7.1. range()****
生成一个从0到x的序列对象,左闭右开
参数:[0、4,1]
1. start:默认为0
2. Stop:必传参
3. step:默认为1,同切片
用途:利用下标操作list
list_1 = ['a', 'b', 'c', 'd']
for k in range(len(list_1)): # k: 下标,通过下标打印*
***print(list_1[k])
1.7.2. Isinstance()****
判断一个函数对象是否是一个已知类型,返回布尔值
num = 1
res = isinstance(num,int)
print(res)
True
1.7.3. Zip()****
Zip(列表1,列表2)****
def test():
list1 = ['name', 'sex', 'age']
list2 = ['Alison', 'F', '25']
key_val = zip(list1, list2)
print(list(key_val))
if name == 'main':
test()
[('name', 'Alison'), ('sex', 'F'), ('age', '25')]
1.8. 函数的分类****
1.8.1. 内置函数****
1. Print
2. Input
3. Type
4. Id
5. Del
6. Len
7. Str
8. Float
9. Int
10. list
1.8.2. 自定义函数****
1.9. 高阶函数****
1.9.1. 匿名函数lamba****
Lamba:不需要起名字、简单,一行代码就行
res = lambda x,y:x+y
print(res(1,2))
相当于
def function(x,y):
return x+y
print(function(1, 2))
3
3
1.9.2. Enumerate(了解)****
做项目很少使用
作用:获取函数以及函数对应的索引值(可以自定义设置)
test_list = ['a','b','c']
res = list(enumerate(test_list))
print(res)
[(0, 'a'), (1, 'b'), (2, 'c')]
test_list = ['a','b','c']
res = list(enumerate(test_list,1))
print(res)
[(1, 'a'), (2, 'b'), (3, 'c')]