python动态函数名的研究】的更多相关文章

所谓动态函数名,就是使用时完全不知道是叫什么名字,可以由用户输入那种. 一般人习惯性会想到eval或exec, 但是众所周知,这样的写法不安全而且容易引起问题,而且不pythonic.而且使用时必须把函数定义写在动态函数名调用之前. def _phyCPU(): print "ok" values = ["_phyCPU"]#, "_proCPU", "_cpuModel"] for value in values: eval…
1. 函数名的运用 ​ 你们说一下,按照你们的理解,函数名是什么? ​ 函数名的定义和变量的定义几乎一致,在变量的角度,函数名其实就是一个变量,具有变量的功能:可以赋值:但是作为函数名他也有特殊的功能就是加上()就会执行对应的函数,所以我们可以把函数名当做一个特殊的变量,那么接下来,我们就来研究一下这个特殊的变量. 1.1 函数的内存地址 def func(): print("呵呵") print(func)结果: <function func at 0x1101e4ea0>…
1.函数名作用 函数名本质上就是函数的内存地址或对象. 1.可以被引用 2.可以被当作容器类型的元素 3.可以当作函数的参数和返回值 4.如果记不住的话,那就记住一句话,就当普通变量用 2.闭包 什么叫做闭包? 1.必须是嵌套函数 2.在嵌套函数的内部的函数可以使用外部的变量(非全局变量) 闭包的特性? 1.python中的闭包会出现内存驻留,普通函数执行一次内存开辟的空间就销毁了.(此处记录一下:不是开辟的内存空间销毁了,是命名空间存放的变量名和值的映射关系销毁了,而开辟的空间的值还在!) 2…
变量函数:意思就是将函数名存在变量中,然后根据变量值动态的调用需要的函数. LOGIN = 'xxxx' PASSWD = "xxx" URL = 'xxxxx' def handler_version(url): return url def request_version(url): return req for funcType in ('handler', 'request'): print '*** Using %s:' % funcType.lower() #a='%s_v…
Date: 20140223Auth: Jin 参考: http://hi.baidu.com/greysign/item/d11919d325c4c2e6b2f777bf 获取函数名python中获取函数名的情况分为内部.外部从外部的情况好获取,使用指向函数的对象,然后用__name__属性 def a(): pass a.__name__ 除此之外还可以:getattr(a,'__name__')从外部获取的方法是非常灵活的.有些同学需要从函数内部获取函数本身的名字,就需要用些技巧了. 使用…
Python(函数名,可迭代对象,迭代器) 一.默认参数的坑 # 比较特殊,正常来说临时空间执行结束后应该删除,但在这里不是. def func(a,l=[]): l.append(a) return l print(func(1)) # [1] print(func(2)) # [1,2] print(func(3)) # [1,2,3] 二.函数名的应用 函数名指向的是函数的内存地址,加上()就执行这个函数 def func(args): return args print(func) #…
一.函数名的运用(第一类对象) 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. 1,函数名的内存地址: def func(): print("呵呵") print(func) # 结果为:<function func at 0x00000000029299D8> 打印出func的内存地址 2,函数名可以赋值给其他变量: def func(): print("呵呵") a = func # 把函数当成一个变量赋值给另一个变量 a()…
1.  函数名就是内存地址 def func(): ') print(func) >>>> <function func at 0x00000000003DC1E0> 2, 函数名可以被作为变量被传递 def func1(): #2 函数名可以作为变量被传递 ') f1 = func1 f2 = f1 f2() # 执行 func1() 3. 函数名可以被作为参数传递 def func1(): # 3.函数名可以作为参数被传递 print(123) def func2(…
1. 函数名是一个特殊的变量 例题 例题1: a = 1 b = 2 c = a + b print(c) # 输出结果 3 # 总结 # 变量是否可以进行相加或者拼接操作是又后面指向的值来决定的,指向的是数字就可以进行运算,如果指向的是字符串类型就可以进行拼接操作 例题2 def func(): print(666) print(func) # 此时的func指向的是一个内存地址,加上()就执行这个函数 # 总结 # func因为指向的是内存地址,所以它就是一个变量 2.函数名可以进行赋值运算…
一.函数名的运用 函数名就是一个变量名,但它是一个特殊的变量名,是一个后面加括号可以执行函数的变量名. def func(): print("我是一个小小的函数") a = func print(a) func() a() func = 3 print(func) 函数名的命名规范与变量的命名规范一样. 函数名可以作为列表中的元素进行存储. 可以作为参数传给函数 def my(): print("我是my") def proxy(fn): # 代理模式. 装饰器 p…
hasattr(object,name) hasattr用来判断对象中是否有name属性或者name方法,如果有,染回true,否则返回false class attr():     def fun(x):         return x%2==1 if __name__ == '__main__':     attr=attr()   print  hasattr(attr,'fun') setattr(object,name,value) 给对象的属性赋值,如属性不存在,先创建 class…
今天天气不冷,微热.9.18警钟长鸣,国人当自强不息. python中有时候会遇到一个函数名称后面没有带()被调用,这是为什么呢?看下面这个例子. def target(): #定义一个函数 print('running ') He = target()#调用函数 #输出 running 上面的例子就是我们正常调用函数的例子.再来看下面这个例子. 1 def target(): #定义一个函数 2 print('running ') 3 4 He = target #传递函数 5 6 7 #输出…
加括号是返回函数的结果,不加括号相当于函数的调用.…
funcs = ['fetch_data_' + i for i in ( 'activities', 'banners', 'server_list')]# from operator import methodcaller# f=lambda fn:methodcaller(fn)(self)f = lambda fn: getattr(self, fn)()…
day12 python   一.函数名的应用(是第一类对象)     函数名的命名规范和变量是一样的     函数名其实就是变量名 def func():     print('i am function') print(func)         #是函数本身, 是一个内存地址 a = func            #变量可赋值, 函数名也可以 a() func = 6            #函数名就是变量 print(func) a = 10 b = 20 c = 30 lst = […
一.使用内置方法和修饰器方法获取类名.函数名 python中获取函数名的情况分为内部.外部,从外部的情况好获取,使用指向函数的对象,然后用__name__属性 复制代码代码如下: def a():passa.__name__ 除此之外还可以: 复制代码代码如下: getattr(a,'__name__') 尽管有些脱裤子放屁,总之,从外部获取的方法是非常灵活的. 有些同学需要从函数内部获取函数本身的名字,就需要用些技巧了.1.使用sys模块的方法: 复制代码代码如下: def a():print…
2018-04-09 update 利用python中的内置函数 eval() ,函数说明: def eval(*args, **kwargs): # real signature unknown """ Evaluate the given source in the context of globals and locals. The source may be a string representing a Python expression or a code obj…
一.函数名应用 函数名是什么?函数名是函数的名字,本质:变量,特殊的变量. 函数名(),执行此函数. python 规范写法 1. #后面加一个空格,再写内容,就没有波浪线了. 2.一行代码写完,下面一行的的内容要空2行, 3.逗号2个边的内容要有空格. 如果是不规范的写法,Pycharm编辑器,会有灰色的波浪线显示. 1.单独打印函数名 def func1(): print(666) print(func1) 执行输出: <function func1 at 0x000001455800A95…
1.三元运算 #1.三元运算 利用已下方法就可以实现一步运算返回a b中大的值 def my_max(a,b): c=0 a=int(input('请输入')) b=int(input('请输入')) # if a>b: # c=a # else: # c=b #或者这样 c = a if a > b else b return c ret=my_max(1,3) print(ret) 2.补充上节差的知识点 形参: #位置参数 #默认参数(关键字参数) #动态参数 *args:接收说有按照位…
一.函数 1.函数定义 def 关键字 -- 定义 func 函数名 -- 和变量定义规则一样 ()必须要写格式 : 声明语句结束 def my_len(): ​ 函数体 def func(a:int,b:str): ​ print(a,b) func(1,2) 2.函数的好处 ​ 1.减少代码重复性(冗余) ​ 2.代码可读性高 ​ 3.将功能进行封装(造工具) 3.调用函数 ​ 函数名+() ​ 多次调用就是执行多次 ​ 可以循环使用 def func(): print("test"…
1.动态参数的作用: 能够接收不固定长度参数 位置参数过多时可以使用动态参数 * args是程序员之间约定俗称(可以更换但是不建议更换) * args获取的是一个元组 ** kwargs获取的是一个字典 * args只接受多余的位置参数 ** kwargs只接受多余的动态关键字参数/可变关键字参数 def func(*args): #形参位置上的*是聚合 print(*args) #函数体中的*就是打散 print(args)func(1,2,3)结果:1 2 3 (1,2,3)函数的参数优先级…
前言需求: 必须现在需要动态创建16个list,每个list的名字不一样,但是是有规律可循,比如第一个list的名字叫: arriage_list_0=[],第二个叫arriage_list_1=[]……..依次类推,但是我又不想手动的去写16个这样的名字,太累了,而且增加了代码的冗余性,灵活性也不强,所以有没有一种方法是能动态创建list名称的呢?答案是有的!而与之对应,既然要对上面的列表动态操作,肯定是少不了动态去解析list名称.所以下面开始介绍方法. python 动态生成变量名loca…
补充知识点 函数形参中默认参数的陷阱 针对不可变数据类型,它是没有陷阱的 def func(name, sex='男'): print(name) print(sex) func('Dylan') # 输出结果: Dylan 男 陷阱只针对默认参数是可变的数据类型 def func(name, a_list=[]): # a_list=[]不在全局名称空间里,也不在局部名称空间里,它在一个特殊的内存空间中 a_list.append(name) # 将实参传进来的 name 增加到 a_list…
在Python动态执行的函数中,eval是用于执行表达式计算的函数,这个函数用于执行字符串中包含的一个表达式或其编译后对应的代码,不能适用于执行Python语句和完整的代码. 一.    语法 1.    语法:eval(expression, globals=None, locals=None) 2.    参数说明: 1)    expression实参是一个字符串或compile编译好的表达式代码,如果是编译的代码,必须编译时模式指定为'eval',否则函数执行后返回None: 2)  …
一 函数名的使用 python中的函数可以像变量一样,动态创建,销毁,当参数传递,作为值返回,叫第一类对象.其他语言功能有限 1.1 函数名是个特殊的变量,可以当做变量赋值 def func(): print("有志者,事竟成,破釜沉舟,百二秦关终属楚") res = 4+3j res = func # res() = func() # 把func当成变量赋值给res ,此刻res也成为了函数,调用函数需要在res后面加上() res() 执行 [root@node10 python]…
知乎上也有相似的问题 偶然碰到一个问题,初想是通过动态创建Python函数的方式来解决,于是调研了动态创建Python函数的方法. 定义lambda函数 在Python中定义lambda函数的写法很简单, func = lambda: "foobar" 可以认为lambda函数是最常用的一种方式. 定义局部函数 Python中函数可以在代码块中进行定义,比如decorator就是通过这种方式实现的, def decorator(func): def _(*args, **kwargs)…
一. 使用内置方法和修饰器方法获取类名.函数名 1. 外部获取 从外部的情况好获取,可以使用指向函数的对象,然后用__name__属性. def a(): pass a.__name__ 或者 getattr(a,'__name__') 2. 内部获取 1)使用修饰器的方法 使用修饰器就可以对函数指向一个变量,然后取变量对象的__name__方法. def timeit(func): def run(*argv): print func.__name__ if argv: ret = func(…
C++ 动态库导出函数名“乱码”及解决 刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都“乱码”了. 导出过程如下: 新建一个Win32项目: 新建的解决方案里有几个导出的示例: // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法.此 DLL 中的所有文件都是用命令行上定义的 DLLEXPORT_EXPORTS // 符号编译的.在使用此 DLL 的 // 任何其他项目上不应定义此符号.这样,源文件中包含此文件的任何其他项目都会将 // DLLEXPO…
1.函数名作用 函数名本质上就是函数的内存地址或对象. 1.可以被引用 2.可以被当作容器类型的元素 3.可以当作函数的参数和返回值 4.如果记不住的话,那就记住一句话,就当普通变量用 2.闭包 什么叫做闭包? 1.必须是嵌套函数 2.在嵌套函数的内部的函数可以使用外部的变量(非全局变量)闭包的特性? 1.python中的闭包会出现内存驻留,普通函数执行一次内存开辟的空间就销毁了.(此处记录一下:不是开辟的内存空间销毁了,是命名空间存放的变量名和值的映射关系销毁了,而开辟的空间的值还在!) 2.…
复习 1.字符串的比较: -- 按照从左往右比较每一个字符,通过字符对应的ascii进行比较 2. 函数的参数 : 1)实参与形参:       -- 形参:在函数定义时()中出现的参数        -- 实参:在函数调用时()中出现的参数 2)实参的分类       -- 位置实参:给位置形参,必须按位置       -- 关键字实参:给位置与关键字形参,不需要按顺序 3)形参的分类      -- 无值位置      -- 有值位置      -- 可变长位置      -- 有无值关键字…