网站上的qq如何做悬浮,建设工程类网站,用什么软件做网站好,个人怎么做自媒体1.函数与过程的区别#xff1a;
有返回值的是函数#xff0c;没有返回值的是过程#xff1b;
函数#xff08;function#xff09;#xff1a;有返回值
过程#xff08;procedure#xff09;#xff1a;简单特殊#xff0c;没有返回值
严格来说#xff0c;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))
#调用方法二
ifunx(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():
x4
def fun2():
nonlocal x
x*x
return x
return fun2()
print(fun1())
global适用于函数内部修改全局变量的值; nonlocal适用于嵌套函数中内部函数修改外部变量的值
如果没有使用以上关键字对全局变量或者外部变量进行修改python会默认将全局变量隐藏起来