python函数与过程 python 过程

python函数调用的参数传递

python的函数参数传递是"引用传递(地址传递)"。

创新互联专注于唐山企业网站建设,响应式网站开发,成都做商城网站。唐山网站建设公司,为唐山等地区提供建站服务。全流程按需网站策划,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

python中赋值语句的过程(x = 1):先申请一段内存分配给一个整型对象来存储数据1,然后让变量x去指向这个对象,实际上就是指向这段内存(这里有点和C语言中的指针类似)。

在Python中,会为每个层次生成一个符号表,里层能调用外层中的变量,而外层不能调用里层中的变量,并且当外层和里层有同名变量时,外层变量会被里层变量屏蔽掉。函数  调用  会为函数局部变量生成一个新的符号表。

局部变量:作用于该函数内部,一旦函数执行完成,该变量就被回收。

全局变量:它是在函数外部定义的,作用域是整个文件。全局变量可以直接在函数里面应用,但是如果要在函数内部改变全局变量,必须使用global关键字进行声明。

注意 :默认值在函数  定义  作用域被解析

在定义函数时,就已经执行力它的局部变量

python中不可变类型是共享内存地址的:把相同的两个不可变类型数据赋给两个不同变量a,b,a,b在内存中的地址是一样的。

如何用python打印定义函数到标签上

关于编程,有三种方式

1、面向对象编程----类 关键字:class

2、面向过程编程----过程 关键字:def

3、函数式编程------函数 关键字:def

函数式编程:函数是逻辑化结构化和过程化的一种编程方式,如

def test(x):

"xxxxx"

x+=1

return x

def:定义函数的关键字

test:函数名称

(x):传入函数的参数

x+=1:泛指逻辑处理块代码

"xxxx"函数描述(非必要,但强列建议添加)

定义一个过程,过程无返回值

def fun1():

"fun1"

print('fun1')

定义一个函数,函数有返回值

def fun2():

"fun2"

print('fun2')

return 0

函数和过程的调用是一致的:

fun1

fun2

在python中,过程就是一个没有返回值的函数,过程默认返因一个none,当函数有多个返回值时,将返回元组,这些值将被当做一个元组的元素,即:

返回值个数0:返回NONE

返回值个数1:返回object

返回值个数多个:返回元组

函数的功能:没有函数的编程只是在写逻辑(功能),脱离函数,重用逻辑(实现功能),唯一的方式就是复制粘贴,使用函数后简化代码,可读性变高,易扩展(保持一致性)

在定义函数时的参数,我们称为行参,如下面的x,y

而调用函数时传入的参数,我们称之为实参,如下面的1、2。

def test(x,y)

print(x)

print(y)

test(1,2)

位置调用时行参与实参的位置关系是一一对应的

def test(x,y)

print(x)

print(y)

test(1,2)

关键字调用时,与实参的位置无关如

def test(x,y)

print(x)

print(y)

test(y=2,x=3)

当位置调用与关键字调用混用时,按照位置调用方式执行,但要记位一句话,关键字参数不能写在位置参数前面,即test(3,y=2,6)此种方式将会报错,应写成test(3,2,z=6)或test(3,z=2,y=6)

当函数中有默认的参数值时如

def test(x,y=1)

.....

return 0

当调用这个函数时,如果不传入y的值时,y的值将采用默认值,如果传入新的y的值时,默认y的值将被覆盖。

默认值使用的场合:

1、软件安装的时候

2、连接数据库的端口

参数组:当行参或实参数量不固定的时候时使用,可与默认参数或行参混用,参数组一定要最至最后

def test(*args)#接收N个位置参数 #def test(name,*args) #def test(name,age=1,*args)

print(args)

test(1,2,3,4,5……)

test(*[1,2,3,4……])

最终实参会被变成一个元组如:

def fun(agr1,agr2,*args)

pass

fun(1,2,3,4,5)

====结果=====

1,2,(3,4,5)

这种方式是预留以后当需要传多个参数时使用而不变动太多的代码

传入不定数量字典时:把N个关键字参数转换成字典的方式,可与默认参数或行参混用,参数组一定要最至最后

def test(agrs1,agrs2,**kwargs) #接收N个关键字参数

# print(kwagrs)

# print(kwagrs['name'])

# print(kwagrs['age'])

pass

test(3,5,name='a',age=23,sex='F')#以关键字的方式传值

=====结果====

3,5,{'name':'a','age':23,'sex':'f'}

test(**{name:'a',age:8,sex:'F'})

###位置参数不能写在关键字参数后面,否则程序会报错

函数调用函数

def test1()

print......

def test2()

print...

test1() #调用test1

print(test2()) #调用

python函数高级

一、函数的定义

函数是指将一组语句的集合通过一个名字(函数名)封装起来,想要执行这个函数,只需要调用函数名即可

特性:

减少重复代码

使程序变得可扩展

使程序变得易维护

二、函数的参数

2.1、形参和实参数

形参,调用时才会存在的值

实惨,实际存在的值

2.2、默认参数

定义:当不输入参数值会有一个默认的值,默认参数要放到最后

2.3、 关键参数

定义: 正常情况下,给函数传参数要安装顺序,不想按顺序可以用关键参数,只需要指定参数名即可,(指定了参数名的就叫关键参数),但是要求是关键参数必须放在位置参数(以位置顺序确定对应的参数)之后

2.4、非固定参数

定义: 如你的函数在传入参数时不确定需要传入多少个参数,就可以使用非固定参数

# 通过元组形式传递

# 通过列表形式传递

# 字典形式(通过k,value的方式传递)

# 通过变量的方式传递

三、函数的返回值

作用:

返回函数执行结果,如果没有设置,默认返回None

终止函数运行,函数遇到return终止函数

四、变量的作用域

全局变量和局部变量

在函数中定义的变量叫局部变量,在程序中一开始定义的变量叫全局变量

全局变量作用域整个程序,局部变量作用域是定义该变量的函数

当全局变量与局部变量同名是,在定义局部变量的函数内,局部变量起作用,其他地方全局变量起作用

同级的局部变量不能互相调用

想要函数里边的变量设置成全局变量,可用global进行设置

五、特殊函数

5.1、嵌套函数

定义: 嵌套函数顾名思义就是在函数里边再嵌套一层函数

提示 在嵌套函数里边调用变量是从里往外依次调用,意思就是如果需要调用的变量在当前层没有就会去外层去调用,依次内推

匿名函数

基于Lambda定义的函数格式为: lambda 参数:函数体

参数,支持任意参数。

匿名函数适用于简单的业务处理,可以快速并简单的创建函数。

# 与三元运算结合

5.3、高阶函数

定义:变量可以指向函数,函数的参数可以接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数称之为高阶函数 只需要满足一下任意一个条件,即是高阶函数

接收一个或多个函数作为输入

return返回另一个函数

5.4、递归函数

定义:一个函数可以调用其他函数,如果一个函数调用自己本身,这个函数就称为递归函数

在默认情况下Python最多能递归1000次,(这样设计师是为了防止被内存被撑死)可以通过sys.setrecursionlimit(1500)进行修改

递归实现过程是先一层一层的进,然后在一层一层的出来

必须有一个明确的条件结束,要不然就是一个死循环了

每次进入更深层次,问题规模都应该有所减少

递归执行效率不高,递归层次过多会导致站溢出

# 计算4的阶乘 4x3x2x1

# 打印数字从1-100

5.5、闭包现象

定义:内层函数调用外层函数的变量,并且内存函数被返回到外边去了

闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域


文章名称:python函数与过程 python 过程
文章网址:http://ybzwz.com/article/doddoph.html