1、定义调用
1.函数的代码块是以def关键字开头,后面跟函数名和括号。
2.函数可有入参,函数的入参必须放在括号的内部。
3.return返回返回值,如果没有return,默认返回None。return是结束语句。
4.函数是以:起始,必须缩进
def hello():
print("hello python!")
#调用函数
hello()
2、函数的参数传递
2.1【实参和形参】
形参:就是函数定义时小括号里的变量
实参:函数调用的时候,小括号里的表达式
函数可以没有形参和实参
def add_shuzi(x,y):
print("结果输出:{}".format(x+y))
add_shuzi(1,1)
2.2【位置参数】
位置参数,要求实参顺序必须和形参顺序完全一致,由形参顺序决定实参顺序,个数也必须一致
def add_shuzi(name,gae,home):
print("woshishui{},jinnian{}sui,wojiazai{}".format(name,gae,home)) add_shuzi("lili",18,"shanghai")
2.3【关键字参数】
关键字参数,函数调用时,实参可以是键值对,键就是形参名字,这样的调用,实参不必关心形参的顺序。关键字参数必须放在后面。
def add_shuzi(name,gae,home):
print("woshishui{},jinnian{}sui,wojiazai{}".format(name,gae,home))
add_shuzi(name="lili",gae=18,home="shanghai")
2.4【默认值参数】
默认值,如果形参在定义的时候给定一个值,那么函数在调用时就可以不传实参,可以简化调用
默认值参数必须放到最右边
如果传了实参,那么实参优先,不会使用默认值
默认值只计算一次
默认值必须是不可变对象
def add_shuzi(name,gae,home="beijing"):
print("woshishui{},jinnian{}sui,wojiazai{}".format(name,gae,home))
add_shuzi(name="lili",gae=18,home="shanghai")
2.5【可变参数】 场景:有的时候我们不确定需要传入函数的参数的数量,只要传入就接收并处理,这个时候需用到不定长参数,不定长参数有如下两种形式:
使用*接收任意数量的位置参数
注意:*的不定长参数被当做元组处理
def demo1(my,*name):
print("大家好,我是{},下面是我的朋友".format(my))
for i in name:
print(i)
demo1('小明','张三','李四','王五')
使用**接收任意数量的关键字参数
注意:**的不定长参数被当做字典处理
def demo2(my,**name):
print("大家好,我是{},下面是我的朋友".format(my))
for v in name.values():
print(v)
demo2('小明',f1 = '张三',f2='李四')
3、函数的返回
【return语句的作用]
return的作用一个是终止函数的执行,所有执行了return后,其后的语句不会被执行
如果没有return语句,则默认返回的是None
return可以返回一个值,可以返回多个值,也可以返回一个元组,也可以返回一个字典,这一点和函数入参类似
def add_num(a,b):
c=a+b
return c
res=add_num(1,8)
print(res)
def add_num(a,b):
c=a+b
c1=c+3
c2=c1+5
return c,c1,c2 #return之后的代码块不会执行
print("天气好好")
res1,res2,res3=add_num(1,8)
print(res1)
print(res2)
print(res3)
4、lambda匿名函数
lambda 只是一个表达式,函数体比 def 简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
函数名 = lambda [arg1 [,arg2,.....argn]]:expression
add_num = lambda a,b:a+b res1 = add_num(1,2)
print(res1)
5、函数的作用域
5.1、函数的局部变量:在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能使用了,我们将这样的变量称为局部变量。
def demo1():
var1 = '变量1'
print("函数的内部:{}".format(var1))
demo1()
print("函数的外边:{}".format(var1))
5.2除了在函数内部定义变量,Python 还允许在所有函数的外部定义变量,这样的变量称为全局变量。
和局部变量不同,全局变量的默认作用域是整个程序,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。
var1="bianliang "
def demo1():
print("函数的内部:{}".format(var1))
demo1()
print("函数的外边:{}".format(var1))
5.3【global 关键字定义全局变量】
在函数体内定义全局变量。即使用 global 关键字对变量进行修饰后,该变量就会变为全局变量。
def demo1():
global var1
var1 = '变量1'
print("函数的内部:{}".format(var1))
demo1()
print("函数的外边:{}".format(var1))
6.【模块】以主程序运行当前模块
1.【name和main分别是什么?】
__name__是当前模块的一个属性,函数的内置属性
"__main__"是字符串,一对引号是创建字符串的快捷方式文章来源:https://uudwc.com/A/qBJbP
def demo():
print(__name__)
# demo()
if __name__ == '__main__':
demo()
文章来源地址https://uudwc.com/A/qBJbP