Python学习手册——函数(1)

纸上得来终觉浅,绝知此事要躬行!

 

Python函数主要概念

  • def是可执行的代码。
  • def创建了一个对象并能将其赋值给某一变量名。
  • lambda创建一个对象但将其作为结果返回。
  • return将一个结果对象发送给调用者。
  • yield向调用者发回一个结果对象,但是记住它离开的地方。
  • global声明一个模块级的变量并被赋值。
  • nonlocal声明了将要赋值的一个封闭的函数变量。
  • 函数是通过赋值(对象引用)传递的。
  • 参数、返回值以及变量并不是声明。

def语句

创建一个函数对象并将其赋值给一个变量名:

def <name>(arg1,arg2,…,argN)
    <statements>

当程序运行并执行了def语句时,它将会创建新的函数对象,封装这个函数的代码并将这个对象赋值给变量名name。

作用域法则

  • 内嵌的模块是全局作用域。一个创建于模块文件顶层的变量的命名空间。
  • 全局作用域的作用范围仅限于单个文件。
  • 每次对函数的调用都创建了一个新的本地作用域。
  • 赋值的变量名除非声明为全局变量或非本地变量,否则均为本地变量。
  • 所有其它的变量名都可以归纳为本地、全局或者内置的。

下面例子中,X,func为全局变量名;Y,Z为本地变量名。

X=99
def func(Y):
    Z=X+Y
    return Z
func(1)

nonlocal语句

py3中,使用nonlocal语句声明嵌套的作用域,使得嵌套的函数能够赋值,并且由此能够修改这样的名称。

 

练习实例:

s1="lfq"
s2="ljm"
[x for x in s1 if x in s2]

def intersect(s1,s2):
    res=[]
    for x in s1:
        if x in s2:
            res.append(x)
    return res
intersect(s1,s2)

intersect(s1,["l","q","F"])

X=99
def func(Y):
    Z=X+Y
    return Z
func(1)

def func(Y):
    X=80
    Z=X+Y
    return Z
X=99
print(func(1))
print(X)

def func(Y):
    global X
    X=80
    Z=X+Y
    return Z
X=99
print(func(1))
print(X)

y,z=1,2
def all_global():
    global x
    x=y+z
print(x)

y,z=1,2
def all_global():
    global x
    x=y+z
all_global() 
print(x)

def f1(x):
    def f2(y):
        return x*y
    return f2
f=f1(3)
print(f)
print(type(f))

f(2)
f(4)
f2(4)
f1(3)(5)

def f1(start):
    state=start
    def f2(lable):
        nonlocal state
        print(lable,state)
        state += 1
    return f2
f=f1(0)
print(f)

f("A")
f("B")
f1(10)("C")
f("C")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值