python中的函数相关知识

目录

全局变量和局部变量

1.全局变量

2.局部变量

引用传递和值传递

1.引用传递

2.值传递

函数参数(默认值参数、命名参数、可变参数、万能参数)

1.默认值参数

2.可变参数

函数递归

匿名函数 -- lambda表达式

偏函数

全局函数


  • 全局变量和局部变量

1.全局变量

<1>全局变量:定义在py文件的变量

<2> 全局变量定义在函数外部,可以在函数内部调用

:如果要在函数内部进行修改,则需要在函数内部声明,通常在def下一行添加 global 变量名

2.局部变量

<1>局部变量:定义在函数中的变量叫做,函数被调用结束后不再生效

<2>在函数外面不能访问到函数内部定义变量

  • 引用传递和值传递

1.引用传递

传入的参数对象是可变对象:列表,字典

def change(ls):
    ls[-1] = -1
    return ls  

x = [1,2,3]
print(change(x))

输出结果

2.值传递

传入的参数对象是不可变的对象:数字,元组,字符串

def change(x):
	x = 1
	return x

a = 2
print(change(a))

  • 函数参数(默认值参数、命名参数、可变参数、万能参数)

1.默认值参数

<1>定义:通常在形参的位置定义好的,在传递参数的过程中,若传递该默认值参数,则结果会调用传递时的参数,如不传递,则使用形参中的默认值

<2>例:计算圆的面积,在这之中,Π通常使用3.14,故可将其设置为默认值,程序如下:

def area(r,pi=3.14):
	return r*r*pi

# 不传递Pi,则使用默认值
print(area(2))
# 传递时,不再使用默认值
print(area(2,3.14159))

运行结果为:

2.可变参数

<1>定义:如果在定义函数时有多个参数,则可使用*args(args可以是其他字母)表示可变参数,可传递可不传递,结果是元组形式

<2>例:

a.不使用调用过程中传递的可变参数,则以元组形式出现

def show(name,age,*args):
	print("我的名字是:",name)
	print("我的年龄是:",age)
	print(args)

show("hh",12,"羽毛球",190)

b.如果使用可变参数

def show(name,age,*args):
	print("我的名字是:",name)
	print("我的年龄是:",age)
	print("我的爱好是:",args[0])
	print("我的身高是:",args[1])

show("hh",12,"羽毛球",190)

 

  • 函数递归

函数自身调用自身叫做函数递归。注:如果递归中没有结束条件,会形成死循环

例如:使用递归求1-100的和

def sum(num):
    if num >= 0:
        return num + sum(num - 1)
    else:
        return 0
print(sum(100))
  • 匿名函数 -- lambda表达式

即没有名称的函数,用法如下:

def show(a,msg):
	a()
	print("haha-------",msg)
	
		
show(lambda :print("I'm a function"),"hihi")

结果如下

  • 偏函数

 例如要转换大量的二进制字符串,每次都传入int(x, base=2)

但可以使用functools.partial创建一个偏函数的,简化操作

>>> import functools
>>> new_int = functools.partial(int,base=2)
>>> new_int("101")
5
  • 全局函数

函数作用

round() 

四舍五入,奇数ok,偶数>5则四舍五入

range(10)  

生成0-9之间的所有数,即左闭右开,默认间隔为1

range(1,10)  

 1-9之间

range(1,10,2)

1-9,步长为2

len(a)  

返回容器的个数

any([a,b])    

a,b中有一个为真即真

all([a,b])        

a,b中都为真即真

eval()

接收多个变量,能去掉字符串,例如: a = eval(input("请输入多个值:"))    // 返回结果为元组

                                                   a,b,c = eval(input("请输入多个值:"))  // 返回结果为单独的值

ascii()

转为字符串

abs()

取绝对值

max(),min()

最大值,最小值

bin(),oct(),hex()

二进制,八进制,十六进制

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值