python 函数 过程_python学习之函数(三)--函数与过程

1.函数与过程的区别:

有返回值的是函数,没有返回值的是过程;

函数(function):有返回值

过程(procedure):简单特殊,没有返回值

严格来说,python只有函数,没有过程。没有返回值的函数,默认有一个返回值none

2.返回值:

返回值可以是多种类型,也可以返回多个数据,可以用数组打包返回,也可以用元组一起返回,没有类型限制

3.函数变量的作用域:

局部变量(local variable):在函数中定义的参数和变量是局部变量,在函数外是无法使用的,因为函数调用完之后,栈就将函数数据清除,所以外部是无法调用的

全局变量(global variable):作用域是整个模块,整个代码都可以访问,可以在函数中使用,最好不要在函数中修改,如果在函数中修改全局变量,会在函数中,新建一个局部变量,名字和全局变量一致,但是不会影线全局变量的值

def decision(price,rate):

final_price = price * rate

old_price = 70

return final_price

old_price = float(input("输入原价:"))

rate = float(input("输入折扣:"))

print(old_price)

print("折扣价格:",decision(old_price,rate)

4.global关键字:可以用来修改成全局变量

count = 5

def test1():

count = 10

print(count)

print(count

5.内嵌函数:在函数内部定义另一个函数;

def fun1():

print("fun1()正在被调用")

def fun2():

print("fun2()正在被调用")

fun2()

fun1()

fun2()

执行结果:

fun1()正在被调用

fun2()正在被调用

Traceback (most recent call last):

File "/Users/zoezhang/PycharmProjects/learnpython/learn-内嵌函数.py", line 8, in

fun2()

NameError: name 'fun2' is not defined

注意:内嵌函数在调用的时候,只能在定义函数的内部能调用,不能全局调用

5.闭包():如果在一个内部函数里,对外部作用域(但不是在全局作用域)里进行引用,则内部函数就被认为是闭包

注意:闭包是由内嵌函数演变而来,全局是不能调用闭包的

#闭包

def funx(x):

def funy(y):

return x*y

return funy

#调用方法一

print(funx(1)(2))

#调用方法二

i=funx(8)

print(i(5))

在python3之前,内部函数是不能直接更改全局变量的,会报错,需要间接使用容器类型来解决,因为容器类型不是存储在栈里,所以可以使用,更改方式如下:

#----------------def fun1():

x=[2]

def fun2():

x[0] *= x[0]

return x[0]

return fun2()

print(fun1())

在python3之后,增加一个关键字nonlocal(同类型函数关键字glocal)

#----------

def fun1():

x=4

def fun2():

nonlocal x

x*=x

return x

return fun2()

print(fun1())

global适用于函数内部修改全局变量的值; nonlocal适用于嵌套函数中内部函数修改外部变量的值

如果没有使用以上关键字,对全局变量或者外部变量进行修改,python会默认将全局变量隐藏起来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值