函数2

函数的参数默认值

注意:如果定义的函数中存在有默认值的参数,应该放在没有默认值参数的后面
def get_circle_area(r,pi=3.14):
	return r*pi*r
#当pi没有赋值时,pi有默认值,那么pi就以默认值计算
	area = get_circle_area(5)
	print(area)

多个返回值——元组

在大多数编程语言中,函数返回值只能是一个值,但是python的函数特别的强大,支持返回多个值。

def get_react(w,h):
	area = w * h 
	cal	= (w + h )*2
	return area,cal
(x,y )=get_react(8,10)
print(x)
print(y)

函数传递问题

值传递和引用传递内存分析
函数是一个对象
栈:先进后出,后进先出。

python中交互两个变量

第三变量中转
temp=b
b=a
a=temp
运算方式
a=a+b
b=a-b
a=a-b
在python中支持   #寄存器参与
a=10
b=20
a,b=b,a
a=20
b=10

函数调用时内存的变化问题

函数的调用时在栈中,压栈

匿名函数(lambda)

在弱数据类型语言,函数一般都是对象。

在函数中调用函数
 fn(msg):
	print("------------")
	print(msg)
def show(fn):
	fn("哈哈,我是参数")
	print("注意,fn是一个函数")
#调用show函数
#fn是函数
#python中,函数可以当成参数传递函数内部
show(fn)
输出:
------------
哈哈,我是参数
注意,fn是一个函数
匿名函数
def show(f):
	f()
	print("注意,fn是一个函数")
#优点:简化了代码操作
#降低了代码的可读性、维护成本增加了

show(lambda :print('呵呵'))
lambda:()
输出:
呵呵
注意,fn是一个函数

函数几种特殊参数(可变参数、命名参数、万能参数)

  1. 可变参数
# *变量名称 函数的形参    
#该参数是一个可变参数
def fn(x,y,*args):
#注意:可变参数默认是一个元组
	print(x+y)
	print(args)
	
fn(50,80,100,45,90)
输出:
130
(100, 45, 90)
  1. 命名参数
#命名参数,**变量名称   字典
#调用时 变量=值  
def fn2(x,y,**kwargs):
	print(kwargs)
	print(kwargs.get('name'))
	print(x+y)

fn2(80,100,name="liujianhong",age=16,sex='男')
输出:
{'name': 'liujianhong', 'age': 16, 'sex': '男'}
liujianhong
180
  1. 万能参数
#可变参数+命名参数=万能参数
def fn3(x,y,z,*args,**kwargs):
	print(args)
	print(kwargs)
	print(x+y+z)

fn3(20,30,40,'hello','16','陕西',color='yellow',where='Chian')
输出:
('hello', '16', '陕西')
{'color': 'yellow', 'where': 'Chian'}
90

递归

函数自身调用自身叫做递归
递归,一定要有结束条件,如果没有,则递归是个死循环

def sum(start,end):
	res=0
	for i in range(start,end+1):
		res+=i
	return res
res=sum(0,100)
print(res)

def sum(num):
	if num == 1:
		return 1
	return num + sum(num-1)

print(sum(100))

变量作用域 global关键字

局部变量:定义在函数内部的变量叫做局部变量;局部含量作用域只有在本函数内有效,外界无法访问

定义了一个全局变量
a = 100
def get_react(w, h):
	# 报错,如果在函数内部操作(改变值)全局变量(本地变量)
	# Python是不允许的,如果一定要操作,可以,请先申明
	# 使用关键字global 变量名称 申明该函数要操作对应的全局变量
	global a
	a += 10
	print(a)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值