文章目录
函数
1.1. 函数的定义和调用
前期我们接触一些函数如:type()、id()、range()等,这些称为内置函数,python本身就有的,可以直接调用。除了内置函数,我们自己也可以定义函数。
1.1.1. 函数定义
关键字def
函数作用:用来封装功能,可以重复使用,写函数是为了提高代码的复用性,也可以减少我们编写重复代码的工作。
函数语法:
def 函数名(参数1,参数2….):
函数体
return 表达式
1.1.2. 函数的调用
函数名()
1.2. 函数的返回值
关键字return
注意;
1、 return是用给函数的返回结果的。
2、 函数只要遇到return,函数就会运行结束。
3、 函数没有定义return,函数返回值为None
函数支持多个返回值,可以返回多个变量值,返回结果为元组,如果需要取值,可元组拆包或下标取值)
例:
def add():
a=100
b=200
c=a+b
d=b+c
return a,b,c
res=add()
print(res)
aa,bb,cc=res
print(aa,bb,cc)
运行结果:
(100, 200, 300)
100 200 300
如果函数中没有return,调用函数再赋值使用,运行结果为NONE
def add():
a=100
b=200
c=a+b
d=b+c
res=add()
print(res)
返回结果:
None
总结:
Return返回值数目=0,返回None
Return返回值数目=1,返回object
Return 返回值数目>1,返回tuple
1.3. 函数的参数
函数的参数定义在函数名后面的括号中

参数的定义(形参):三种形式
1)必需参数: 定义几个参数,必须传几个参数。
2)默认参数:调用的时候,可以传参也可以不传,如果传了值那么就要传入值,如果不传那么用默认值。
3)不定长参数:
*args: 可以接收所有未被接收的位置参数,并且以一个元组形式保存。
**kwargs:可以接收所有未被接收的关键字参数,并且以一个字典形式保存。
def func_argument(a,b,*args,**kwargs):
print(a)
print(b)
print(args)
print(kwargs)
print(type(args))
func_argument(11,22,100,dd=200)
返回结果:
11
22
(100,)
{'dd': 200}
func_argument(a=11,b=22,cc=100,dd=200)
返回结果:
11
22
()
{'cc': 100, 'dd': 200}
调用函数时的两种传参形式。
1)位置参数:必须参数
2)关键字传参,不用考虑参数位置。
res=add(a=100,b=500)
Print(res)
一个或二个星花*: 打包 拆包
函数定义时,“*”和“**”可以进行打包
def func_argument(a,*args,**kwargs):
print(a)
print(args)
print(kwargs)
print(type(args))
cs=(11,22,33,44,55)
func_argument(cs)
(11, 22, 33, 44, 55)
()
{}
“*”和“**”,在函数调用时进行拆包
func_argument(*cs)
11
(22, 33, 44, 55)时
{}
函数调用是,*可以进行拆包
1.4. 函数的作用域

全局变量:直接定义在模块(py中的变量),在整个文件中任何地方都能够访问。
局部变量:定义在函数中的,它的作业范围仅限当前定义的函数中。
注意:
1)不同的函数,可以定义相同的名字的局部变量,不会产生影响。
2)局部变量的作用,为了临时保存数据。
def func():
b=100
print(b)
func()
100

Global
如果想在函数内部改变全局变量的值,那么在全局变量之前加global关键字。
A=66 #全局变量
def func_add():
global A
A=100 #局部变量
print(A+A)
func_add()
print(A)
运行结果:
200
100
1.5. 常见的内置函数
1.5.1 常见内置函数
Int 、 float 、 bool 、 str 、list、tuple、
dict 、set 、 range 、type、id、print、input
Len、Min 、Max、Sum
1.5.2 python中高级内置函数
enumerate
返回一个可以枚举的对象,enumerate将其组成一个索引序列,利用它可以同时取出索引和值。我们来下面例子,详细说明
先来看下直接打印函数调用,参数列表,返回一个可枚举对象。
li=[11,12,13,16]
print(enumerate(li)
返回结果:(是一个可枚举对象)
<enumerate object at 0x000001A492AC3728>
通过遍历这个枚举对象,可以返回索引与值的元组。
for i in enumerate(li):
print(i)
#返回结果:(返回索引与值的元组)
(0, 11)
(1, 12)
(2, 13)
(3, 16)
同时可以利用元组拆包,可以灵活取出索引或值,也可以同时取出索引和值。
for i,v in enumerate(li):
print(i,v)
#返回结果:(元组可以拆包,所以可以同时取出索引和值)
0 11
1 12
2 13
3 16
eval
取出字符串中的内容 ,当字符串STR当成有效表达式来求值,并返回计算结果。
(简单来说就是脱去外层外衣(字符串引号))
li=[11,12,13,16]
str1="li"
print(eval(str1))
返回结果:
[11, 12, 13, 16]
str2="li2"
print(eval(str2))
返回结果:
NameError: name 'li2' is not defined
my_str="print('hello python')"
eval(my_str)
返回结果:
hello python
exec
动态执行字符串中的python代码
exec执行储存在字符串文件中的python语句,相比于eval,exec可以执行更复杂的 python代码(基本不用)
例: eval不支持,但exec支持:


filter
过滤
li2=[11,22,33,44,1,41,98]
def func(x):
return x>40 #一定要有返回
res=filter(func,li2) #参数是可迭代对象
print(list(res))
map
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
第二个参数是一个或多个序列。
li2=[11,22,33,44,1,41,98]
def func(x):
return x>40
res2=map(func,li2)
print(list(res2))
返回结果:
[False, False, False, True, False, True, True]
zip
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
title=['name','age','gender']
value=['musen',18,'男']
res5=zip(title,value)
print(dict(res5))
返回结果:
{'name': 'musen', 'age': 18, 'gender': '男'}
本文详细介绍了Python3中的函数,包括函数的定义和调用、返回值、参数类型(必需、默认、不定长)、作用域以及常用的内置函数如enumerate、eval、exec、filter、map和zip的使用方法。强调了return关键字的功能,参数的传递方式以及全局与局部变量的区别。
841

被折叠的 条评论
为什么被折叠?



