目录
导航:
Python第二语言(一、Python start)-CSDN博客
Python第二语言(二、Python语言基础)-CSDN博客
Python第二语言(三、Python函数def)-CSDN博客
Python第二语言(四、Python数据容器)-CSDN博客
Python第二语言(五、Python文件相关操作)-CSDN博客
Python第二语言(九、Python第一阶段实操)-CSDN博客
Python第二语言(十、Python面向对象(上))-CSDN博客
Python第二语言(十一、Python面向对象(下))-CSDN博客
Python第二语言(十二、SQL入门和实战)-CSDN博客
Python第二语言(十三、PySpark实战)-CSDN博客
- arr = [5, 4, 3, 2, 1]
- # 默认按照从小到大的方式进行排序
- print(sorted(arr))
'运行

使用方式:
列表.sort(key=选择排序依据的函数,reverse=TruelFalse)
列表的sort方法:
- my_list = [["a", 33], ["b", 11], ["c", 55]]
-
- def choose_sort_key(element):
- return element[1]
-
- # 按照choose_sort_key的值reverse=True降序来排序,False为升序
- my_list.sort(key=choose_sort_key, reverse=True)
- print(my_list)
'运行

lambda简写形式:
- # 简写
- my_list = [["a", 33], ["b", 11], ["c", 55]]
- # 按照choose_sort_key的值reverse=True降序来排序,False为升序
- my_list.sort(key=lambda element: element[1], reverse=True)
- print(my_list)
'运行

print(len("张三你好"))

- def fun_name(parm):
- parm = 1
- return parm
-
- def 函数名(传入参数):
- 函数体
- return 返回值
'运行

调用函数:

def(param)函数传参:
- def add(x, y): # 形参
- print(x + y)
- return x + y
-
-
- # 函数调用传参 实参
- add(5, 5)
'运行

return返回值:
None(函数中没有写return,那么就默认是None类型的)
- # 1.None用于声明无初始内容的变量
- name = None
-
-
- def add(num):
- if num > 3:
- return num
- return None # 2.函数返回值
-
-
- # 函数调用传参
- result = add(2)
-
- if not result:
- # 3.进入if表示result是None值,也就是False
- print("函数体处于None")
'运行

- def add(num):
- """
-
- :param num:
- :return:
- """
- if num > 3:
- return num
- return None
'运行

- # 内嵌函数
- def add1():
- print(1)
- add2()
-
-
- def add2():
- print(2)
- add3()
-
-
- def add3():
- print(3)
-
-
- # 调用函数
- add1()
'运行

局部变量:
变量作用域指的是变量的作用范围;(变量在哪里可用,在哪里不可用)
主要分为两类:局部变量和全局变量:
1. 局部变量:是定义在函数体内部的变量,即只在函数体内部生效:

2. 全局变量:指的是在函数体内、外都能生效的变量;
- num = 10 # 定义全局变量
-
-
- def test_a():
- print(num) # 访问全局变量
-
-
- def test_b():
- print(num) # 访问全局变量
-
-
- test_a()
- test_b()
'运行

变量使用的时候,如果在函数内又重置了一个变量,那此时这个变量又变成了局部变量,仅在当前函数中可用,并不会改变全局的变量;
- num = 10 # 定义全局变量
-
-
- def test_a():
- num = 20 # num现在是个局部变量,不会影响到全局变量
- print(num) # 访问全局变量
-
-
- test_a()
- print("全局变量:" + str(num))
'运行

global将局部变量定义成全局变量:
在函数内部定义了global全局变量,那么最终结果会被改变;
- num = 10 # 定义全局变量
-
-
- def test_a():
- global num # global声明num是个全局变量
- num = 20
- print(num) # 访问全局变量
-
-
- test_a()
- print("全局变量:" + str(num))
'运行

- def test_return():
- return 1, 2
-
-
- x, y = test_return()
- print(x) # 结果1
- print(y) # 结果2
'运行

1. 函数的多种传参方式:
2. 位置传参(根据参数的位置传参)
- # 位置参数:调用函数时根据函数定义的参数位置来传递参数
- def user_info(name, age, gender):
- print(f'我的名字是{name}, 年龄是{age}, 性别是{gender}')
-
-
- user_info('yiyi', 20, '男')
'运行

3. 关键字传参(根据参数的名字传参,也可与位置传参 混合传参)
- # 关键字参数:函数调用时通过"键=值"形式传递参数
- def user_info(name, age, gender):
- print(f'我的名字是{name}, 年龄是{age}, 性别是{gender}')
-
-
- # 关键字传参
- user_info(name="yiyi", age=20, gender="男")
- # 可以不按照固定顺序
- user_info(age=20, gender="男", name="yiyi")
- # 可以和位置参数混用,位置参数必须在前,且匹配参数顺序
- user_info("yiyi", age=20, gender="男")
'运行

4. 默认参数 || 缺省参数 (默认给参数传递一个值,如若不传参默认是原本的参数)
- def user_info(name, age, gender="男"):
- print(f'我的名字是{name}, 年龄是{age}, 性别是{gender}')
-
-
- user_info("yiyi", 20)
- user_info("zhangsan", 18, "女")
'运行

5. 不定长参数(可通过*(*默认位置传参) 或者 ** (**字典传参,需要键值对)不定义长度的参数传递)
位置传递不定长参数 *args (需要传递的形式为元组tuple形式):
- # 不定长参数
- def user_info(*args):
- print(args)
-
- user_info('yiyi')
- user_info('zhangsan', 18)
'运行

关键字传递不定长参数(需要传递的形式为字典dict()形式)
参数是"键=值"形式的情况下,所有的"键=值"都会被kwargs接受,同时会根据"键=值"组成字典;
- def user_info(**kwargs):
- print(kwargs)
-
- # {'name': 'yiyi', 'age': 18, 'id': 120}
- user_info(name='yiyi', age=18, id=120)
'运行

1. 函数作为参数传递(可以将函数当作参数一样,传递给其它函数)
案例:
- def test_func(compute):
- result = compute(1, 2)
- print(result)
-
-
- # 将函数当作参数传入到函数中
- def compute(x, y):
- return x + y
-
-
- test_func(compute)
'运行

2. lambda匿名函数(lamdba 参数,参数 : 逻辑代码,只能写一行)临时函数,只可写一次的匿名函数;
有名称的函数,可以基于名称重复使用;
无名称的匿名函数,只可临时使用一次;
使用def和使用lambda,定义的函数功能完全一致,只是lambda关键字定义的函数是匿名的,无法二次使用;
- # 通过def关键字,定义一个函数,并传入
- def test_func(compute):
- result = compute(1, 2)
- print(result)
-
-
- # 通过lambda关键字,传入一个一次性使用的lambda匿名函数
- test_func(lambda x, y: x + y) # 结果为3
'运行
