函数:
函数代码块以 def ()关键词开头
调用:函数名()
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始
全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,叫局部变量
定义在函数外的拥有全局作用域,叫全局变量
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。
当全局变量和局部变量同名时,局部变量优先
局部变量想在全局用, global变量名,如果变量相同, 原全局变量值会被覆盖,
当列表和字典作为全局变量时,不用加global
可更改与不可更改对象:
可更改(mutable)对象:
list,dict 等则是可以修改的对象,当函数中调用全局变量并改变对象值时,全局变量的值也改变
不可更改(immutable)对象:
strings, tuples, 和 numbers 是不可更改的对象,当函数中调用全局变量时,
即使改变也是局部值改变,不会影响全局变量值
参数:
1必需参数(必选参数):
须以正确的顺序传入函数。调用时的数量必须和声明时的一样
2默认参数:
调用函数时,如果没有传递参数,则会使用默认参数(默认值 直接赋值的)
可以不指定参数名,但是顺序要保证,否则要指定参数名
3不定长参数 *:
也是可变参数,允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个元组
(如果使用时不传参数,输出为空元组)
定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。
但是,调用该函数时,可以传入任意个参数,包括0个参数:
如果已经有一个list或者tuple,要调用一个可变参数怎么办?
所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
4关键字参数**: (键值对的形式)
使用关键字参数允许函数调用时参数的顺序与声明时不一致
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个字典
输出参数变成字典,传参必须是健值对的形式,多个参数会在一个字典形式输出
5命名关键字参数:取到字典里指定得健的值,
注: 在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,
这5种参数都可以组合使用,除了可变参数无法和命名关键字参数混合。
但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。
return [表达式] 结束函数,选择性地返回一个值给调用方。可以返回多个值,返回的多个值组成一个元组,
返回值加上一对中括号,则返回一个列表不带表达式的return相当于返回 None。
匿名函数:没有名字 函数体简单
使用 lambda 来创建匿名函数,他是一个表达式” : “后面,只能有一个表达式,def则可以有多个
像if或for或print等语句不能用于lambda中,def可以。
语法格式:变量名=lambda 参数名(可以有多个):表达式
map()循环:
map(函数,序列,可以和range使用)把序列中的值当参数逐个传给函数。
如果函数中有两个参数,即可两个序列,并把结果作为新的list返回。
filter() 过滤
filter(函数名,序列,可以和range使用)对列表中的项目依次执行函数
将执行结果为True的项目组成一个List/String/Tuple(取决于序列的类型)返回。
reduce统计/ 需要导入 (函数,参数有两个:条件语句)还可以接收第3个可选参数
(函数,序列)函数的参数只能有两个,先把序列中第一个值和第二个值当参数传给函数,
再把函数的返回值和第三个值当参数传给函数,然后只返回一个结果。
reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,
reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f
,先计算序列里的头两个, 在和第三个计算,依次类推并返回最终结果值。
Python内置了求和函数sum(),但没有求积的函数,请利用reduce()来求积:
自定义排序函数:
sorted()函数 : sorted(迭代对象,函数,key,排序规则)
iterable -- 可迭代对象。
cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,
大于则返回1,小于则返回-1,等于则返回0。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,
指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,
如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。
可以对字符串进行排序,按照ASCII大小来比较
.sort()排序方法: sort(函数,key,排序规则)
.sorted()和sort()的区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
sort :对原有列表进行排序,改变原来列表的顺序,无返回值
sorted:序时不影响原数据,产生新的排序数据,还是原结果
函数代码块以 def ()关键词开头
调用:函数名()
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始
全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,叫局部变量
定义在函数外的拥有全局作用域,叫全局变量
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。
当全局变量和局部变量同名时,局部变量优先
局部变量想在全局用, global变量名,如果变量相同, 原全局变量值会被覆盖,
当列表和字典作为全局变量时,不用加global
可更改与不可更改对象:
可更改(mutable)对象:
list,dict 等则是可以修改的对象,当函数中调用全局变量并改变对象值时,全局变量的值也改变
不可更改(immutable)对象:
strings, tuples, 和 numbers 是不可更改的对象,当函数中调用全局变量时,
即使改变也是局部值改变,不会影响全局变量值
参数:
1必需参数(必选参数):
须以正确的顺序传入函数。调用时的数量必须和声明时的一样
2默认参数:
调用函数时,如果没有传递参数,则会使用默认参数(默认值 直接赋值的)
可以不指定参数名,但是顺序要保证,否则要指定参数名
3不定长参数 *:
也是可变参数,允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个元组
(如果使用时不传参数,输出为空元组)
定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。
但是,调用该函数时,可以传入任意个参数,包括0个参数:
如果已经有一个list或者tuple,要调用一个可变参数怎么办?
所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
4关键字参数**: (键值对的形式)
使用关键字参数允许函数调用时参数的顺序与声明时不一致
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个字典
输出参数变成字典,传参必须是健值对的形式,多个参数会在一个字典形式输出
5命名关键字参数:取到字典里指定得健的值,
注: 在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,
这5种参数都可以组合使用,除了可变参数无法和命名关键字参数混合。
但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。
return [表达式] 结束函数,选择性地返回一个值给调用方。可以返回多个值,返回的多个值组成一个元组,
返回值加上一对中括号,则返回一个列表不带表达式的return相当于返回 None。
匿名函数:没有名字 函数体简单
使用 lambda 来创建匿名函数,他是一个表达式” : “后面,只能有一个表达式,def则可以有多个
像if或for或print等语句不能用于lambda中,def可以。
语法格式:变量名=lambda 参数名(可以有多个):表达式
map()循环:
map(函数,序列,可以和range使用)把序列中的值当参数逐个传给函数。
如果函数中有两个参数,即可两个序列,并把结果作为新的list返回。
filter() 过滤
filter(函数名,序列,可以和range使用)对列表中的项目依次执行函数
将执行结果为True的项目组成一个List/String/Tuple(取决于序列的类型)返回。
reduce统计/ 需要导入 (函数,参数有两个:条件语句)还可以接收第3个可选参数
(函数,序列)函数的参数只能有两个,先把序列中第一个值和第二个值当参数传给函数,
再把函数的返回值和第三个值当参数传给函数,然后只返回一个结果。
reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,
reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f
,先计算序列里的头两个, 在和第三个计算,依次类推并返回最终结果值。
Python内置了求和函数sum(),但没有求积的函数,请利用reduce()来求积:
自定义排序函数:
sorted()函数 : sorted(迭代对象,函数,key,排序规则)
iterable -- 可迭代对象。
cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,
大于则返回1,小于则返回-1,等于则返回0。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,
指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,
如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。
可以对字符串进行排序,按照ASCII大小来比较
.sort()排序方法: sort(函数,key,排序规则)
.sorted()和sort()的区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
sort :对原有列表进行排序,改变原来列表的顺序,无返回值
sorted:序时不影响原数据,产生新的排序数据,还是原结果