def

# 函数

# 修改全局变量a = 10
def func():
    global a
    a = 20
print(a)  #10
func()
print(a)  #20
-----------------
# 外部访问局部变量def outer():
    a = 10
    def func():
        nonlocal a
        a = 20
    return a
def func():
    b = outer()
    return b
print(func()) #10
# 1 返回函数名
def outer():
    def inner():
        print("我是inner")
    return inner
ret = outer()
ret()
# 2 闭包 里面用到了外面的变量
def func():
    a = 10
    def inner(): #定义inner
        print(a)
    inner() #调用inner
    print(inner.__closure__)  # 能打印出东西就是闭包
func()
#装饰器def wrapper(fn):
    def inner(*args,**kwargs):
        print(‘进站‘)
        ret = fn(*args,**kwargs)
        print(‘出检票‘)
    return inner

@wrapper
def train():
    print(‘坐火车去拉萨‘)

@wrapper
def bus():
    print(‘座公交车去拉萨‘)

train()
bus()
lst = ["张无忌", "胡辣汤", "赵敏", "灭绝"]
# for循环的本质
it = lst.__iter__() #  for循环的内部是用迭代器来获取数据的
while 1:
    try:
        item = it.__next__()
        print(item)
    except StopIteration:
        print("结束了")
        break
def order():
    lst = []
    for i in range(10000):
        lst.append("衣服%s" % i)
    return lst
ret = order()
print(ret[0])
# 下面生成器  工厂生产衣服的例子
def order():
    for i in range(10000):
        yield "衣服%s" % i
gen = order()
print(next(gen))
print(gen.__next__())
# 生成器send 的传值的例子
def eat():
    print("韭菜盒子")
    a = yield "红烧肉"
    print(a)
    b = yield "吱吱冒油的大肘子"
    print(b)  # 绿豆汤
    c = yield "地三鲜"
    print(c)  # 红豆汤

g=eat()
print("外面打印:" + g.__next__())     # yield "红烧肉"
print("外面打印:" + g.send("疙瘩汤")) # yield "吱吱冒油的大肘子"
print("外面打印:" + g.send("绿豆汤")) # yield "地三鲜"
print("外面打印:" + g.send("红豆汤")) # 报错
def add(a, b):
    return a + b

def gen_fun():  # 0 1 2 3
    for i in range(4):
        yield i

g = gen_fun()   # 0 1 2 3

n=3
g = (add(i,5) for i in g)
n=5
g = (add(i,5) for i in g)
#
# for n in [3, 5]:
#     g = (add(i, n) for i in g)

print(list(g)) #[10, 11, 12, 13]

原文地址:https://www.cnblogs.com/zhangchen-sx/p/10952748.html

时间: 2024-10-12 19:18:54

def的相关文章

COGS——C2098. Asm.Def的病毒

http://www.cogs.pro/cogs/problem/problem.php?pid=2098 ★☆   输入文件:asm_virus.in   输出文件:asm_virus.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “这就是我们最新研制的,世界上第一种可持久化动态计算机病毒,‘创世纪’.”方教授介绍道. “哦.”主席面无表情地点点头. “‘创世纪’无法真正杀死透明计算网络,但是可以把它变成傻子.可惜透明计算网络能轻松地辨认出病毒,所以我建议……

COGS 2098. Asm.Def的病毒

★☆   输入文件:asm_virus.in   输出文件:asm_virus.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “这就是我们最新研制的,世界上第一种可持久化动态计算机病毒,‘创世纪’.”方教授介绍道. “哦.”主席面无表情地点点头. “‘创世纪’无法真正杀死透明计算网络,但是可以把它变成傻子.可惜透明计算网络能轻松地辨认出病毒,所以我建议……” “为什么不伪装呢?”Asm.Def说. “当然不行,它比我们更懂伪装.” “我是说,把我们的病毒伪装成杀

Python中def的用法

def定义了一个模块的变量,或者说是类的变量.它本身是一个函数对象.属于对象的函数,就是对象的属性. def func():    return 2print func() # 1func = 5print func # 5print func() # 错误!函数对象已经被覆盖了 在同一模块里,函数在未被定义前是不能使用的,因为它是在“运行时”定义的:print func() # 错误!函数未定义def func():    prnt 1

python 函数进阶class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(value, int): raise V

1.类和实例 #类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的"对象",每个对象都拥有相同的方法,但各自的数据可能不同. #__init__ 方法 ,其第一个参数永远是self,print_score也是方法. name score 属性 class Student(object): def __init__(self, name, score):        self.name = name        self.score = score def p

python def说明

可以这样讲,def定义了一个模块的变量,或者说是类的变量.它本身是一个函数对象.属于对象的函数,就是对象的属性.当然,你也可以叫它“方法”. python 的函数和其他语言的函数有很大区别.它是可以被其他变量覆盖的,如: def func():     print 1 print func() # 1 func = 5 print func # 5 pring func() # 错误!函数对象已经被覆盖了 在同一模块里,函数在未被定义前是不能使用的,因为它是在“运行时”定义的: print fu

利用def生成dll文件

DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明:另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出.属性及其他方面的信息.            首先创建 一个DLL程序,.cpp中int __stdcall Add(int numa, int numb){       return (numa + numb);} int __stdcall Sub(int numa, int n

VC2010 利用 def 文件生成 dll 文件的方法

近期有个需求,要生成一个dll 文件.文件里的函数都是採用 stdcall 函数调用约定,可是不希望函数名被修饰(add 被修饰成 [email protected]). 这时就要用def 文件了. 比方我有以下两个函数: extern "C" int _stdcall add(int a, int b) { return a + b; } extern "C" int _stdcall sub(int a, int b) { return a - b; } def

利用openssl管理证书及SSL编程第3部分:将MinGW编译的openssl dll导出def和lib供MSVC使用

将MinGW编译的openssl dll导出def和lib供MSVC使用 前面我们用mingw把openssl 编译成了动态库,得到下面2个dll文件: libeay32.dll ssleay32.dll 然后用下面的脚本生成Windows MSVC需要的模块定义文件(.def, .lib和.exp), 然后就可以在VC中使用了. 前提系统要安装VS. 系统要求: Windows7+VS Studio (2008 and later)+MSYS 1) 根据32位dll生成模块定义文件的pytho

关于DLL的导出.def文件

1.VS2012创建.def文件 右键工程名->add->New Item->Visual C++->Code->Module-Define File(.def) 2.def文件的编写 一个def文件必须有两个部分:LIBRARY和EXPORTS 让我们先看一个基本的.def文件稍后我将解析 LIBRARY dll_tutorial DESCRIPTION "our simple DLL" EXPORTS Add @1 Function @2 第一行,''

String getProperty(String key, String def)

String getProperty(String key, String def) 获取用指定键描述的系统属性. * 若key 系统环境或properties等配置文件的键,如os.name等,返回key对应的值 * 若key 为空或为null,则报错! key can't be empty key can't be null * 若key 不为空不为null,也不是系统环境或properties等配置文件的键,返回def的值 演示代码: package com.test; public cl