python3 函数(定义、调用、返回值、参数、作用域、内置函数)

本文详细介绍了Python3中的函数,包括函数的定义和调用、返回值、参数类型(必需、默认、不定长)、作用域以及常用的内置函数如enumerate、eval、exec、filter、map和zip的使用方法。强调了return关键字的功能,参数的传递方式以及全局与局部变量的区别。

函数

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': '男'}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值