当前位置:首页 » 编程语言 » python动态函数

python动态函数

发布时间: 2022-03-08 17:36:20

⑴ 为什么说python是一门动态语言

首先要理解什么是动态语言:通俗地说:能够在运行时修改自身程序结构的语言,就属于动态语言。那怎样才算是“运行时修改自身程序结构”捏?比如下面这几个例子都 算:在运行时给某个类增加成员函数及成员变量;在运行时改变某个类的父类;在运行时创建出某个函数.。


Python是可以实现动态类的创建类(在任意代码位置,符合正确的书写格式),或者给类增加删除属性。因为类也是对象,你可以在运行时动态的创建它们,就像其他任何对象一样。首先,你可以在函数中创建类,使用class关键字即可。


例子:

defchoose_class(name):
ifname=='foo':
classFoo(object):
pass
returnFoo#返回的是类,不是类的实例
else:
classBar(object):
pass
returnBar
#排版有问题不好意思
#如果你觉得还不够动态,因为你仍然需要自己编写整个类的代码。由于类也是对象,
#所以它们必须是通过什么东西来生成的才对。当你使用class关键字时,Python解释器自动创建这
#个对象。但就和Python中的大多数事情一样,Python仍然提供给你手动处理的方法。内建函数中有
#一个名叫type的内建函数,这个内建函数古老但强大的函数,它能够让你知道一个对象的类型是
#什么,就像这样:

>>>MyShinyClass=type('MyShinyClass',(),{})#返回一个类对象
>>>printMyShinyClass<class'__main__.MyShinyClass'
>>>>printMyShinyClass()#创建一个该类的实例
<__main__.MyShinyClassobjectat0x8997cec>另附type使用方法:
#type(类名,父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值))

⑵ 如何用python动态生成变量名字

你好,方法如下:
要写一个程序,让linuxany1=1,linuxany2=2,… inuxany100=100,你会怎么做?
最容易想到的自然是eval,但是实际上根本不需要这种危险的东西,因为Python的变量名就是一个字典的key而已。要获取这个字典,直接用locals和globals函数即可。
>>> names = locals()

>>> for i in xrange(1, 101):

... names['linuxany%s' % i] = i

... >>> linuxany1
1 >>> linuxany2
2 >>> linuxany100
100
不过你也许会说这个例子没什么用,毕竟用数组来实现更为实用。
举一个例子:服务器使用一种对象数据库,可以直接保存对象到数据库中。服务器列出目前支持的所有类,而用户想添加一个不存在于列表中的类,于是向服务器发送一段JSON或XML文本。服务器解析这段文本,将它转换成一个class对象,并且设置类名。之后用户就可以随意生成这个类的对象。
关键是这个数据库和类名相关,你不能用一个通用的Object类来保存所有的对象,否则查询时就乱套了。
除了动态设置变量名,动态删除也是可以的,例如
del locals()['linuxany1']
同样,delattr也是可用的。
希望能帮到你。

⑶ python 怎么生成可变函数名

定义一个A类,然后实例化一个A对象,通过setattr函数来给当前类添加一个变量,值是test函数。调用haha函数,就相当于调用了test函数。 例2,定义一个模块,通过另一个模块函数调用函数来增加变量,值是test2函数。调用haha函数,就相当于调用了test2函数。
原理
python系统会维护一个变量的字典,可以通过locals()或者globals()获取到该字典。由于字典是可变对象,那么,就可以动态的增加变量。由于函数也是一个对象,那么就可以将变量指向函数。这样就可以达到动态修改函数名的目的了。

⑷ python里面 如何动态调用 一个函数

function="luckywin."+case_name+"."+def_name
function=eval(function)
function(player_id,test_url)

function是个字符串,function(player_id,test_url) 这样写肯定不是字符串,怎么能用eval呢,直接eval function返回函数名,然后调用函数

⑸ python是动态语言吗

动态语言的定义:动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用。
它是一类在执行时能够改变其结构的语言:比如新的函数、对象、甚至代码能够被引进,已有的函数能够被删除或是其它结构上的变化。
Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断
更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。
自从20世纪90年代初Python语言诞生至今,它已被逐渐广泛应用于系统管理任务的处理和Web编程。
python学习网,免费的python学习网站,欢迎在线学习!
Python的创始人为荷兰人吉多·范罗苏姆 (Guido van Rossum)。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,
决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是取自英国
20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》(Monty Python's Flying Circus)。
ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC 这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC
语言并没有成功,究其原因,Guido 认为是其非开放造成的。Guido 决心在Python 中避免这一错误。同时,他还想实现在ABC 中闪现
过但未曾实现的东西。
就这样,Python在Guido手中诞生了。可以说,Python是从ABC发展起来,主要受到了Mola-3(另一种相当优美且强大的语言,为
小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。
Python 已经成为最受欢迎的程序设计语言之一。自从2004年以后,python的使用率呈线性增长。Python 2于2000年10月16日发
布,稳定版本是Python 2.7。Python 3于2008年12月3日发布,不完全兼容Python 2。 [3] 2011年1月,它被TIOBE编程语言排行榜评
为2010年度语言。

⑹ Python怎么根据不同的字符串动态选择函数

#可以用函数字典,看看是否满足你的要求
deftext_func(self):
print"thisistextfunc"
defint_func(self):
print"thisisint_func"
gen_func={'text':text_func,'int':int_func}
defchoose(a='text'):
returngen_func[a]

⑺ 怎样理解Python是动态语言说出其能动态的本质原因。

它是一类在执行时能够改变其结构的语言:比如新的函数、对象、甚至代码能够被引进,已有的函数能够被删除或是其它结构上的变化。它是一类在执行时能够改变其结构的语言:比如新的函数、对象、甚至代码能够被引进,已有的函数能够被删除或是其它结构上的变化。

⑻ 求Python代码编动态规划贝尔曼函数

classNode(object):

def__init__(self,name):
self._name=name
self._value=None
self._from=None
self._next=[]

defsetValue(self,value):
self._value=value

defsetNext(self,node):
self._next.append(node)

defsetFrom(self,node):
self._from=node

defgetValue(self):
returnself._value

defgetNext(self):
returnself._next

defgetName(self):
returnself._name

defgetFrom(self):
returnself._from

classBFtree():

def__init__(self,dList):
self._dList=dList

defbfValue(self,start):
cur=start
ifcur.getNext()isnotNone:
fornodeincur.getNext():
path=[cur.getName(),node.getName()]
path.sort()
path=''.join(path)
value=cur.getValue()+self._dList[path]
ifnode.getValue()isNoneorvalue<node.getValue():
node.setValue(value)
node.setFrom(cur)
self.bfValue(node)

defmove(self,start,end):
print'From:',start.getName(),'to:',end.getName()
start.setValue(0)
self.bfValue(start)
trace=[end.getName()]
cur=end
whilecur.getFrom()isnotNone:
cur=cur.getFrom()
trace.append(cur.getName())
trace=reversed(trace)
print'Thepathis',''.join(trace),'andthevalueis',end.getValue()

#builidngnode
a=Node('A')
b=Node('B')
c=Node('C')
d=Node('D')
e=Node('E')
f=Node('F')
g=Node('G')
h=Node('H')

#buildtree
a.setNext(b)
a.setNext(c)
a.setNext(d)

b.setNext(a)
b.setNext(g)

c.setNext(a)
c.setNext(g)
c.setNext(e)

d.setNext(a)
d.setNext(e)

e.setNext(c)
e.setNext(b)
e.setNext(f)

f.setNext(e)

g.setNext(b)
g.setNext(c)
g.setNext(h)

h.setNext(g)

#builddistancelist
dList=dict();
dList['AB']=1
dList['AC']=2
dList['AD']=3
dList['BG']=1
dList['BE']=6
dList['CE']=2
dList['CG']=5
dList['DE']=4
dList['EF']=3
dList['GH']=4

#buildBFtree
tree=BFtree(dList)
tree.move(a,h)
tree.move(a,f)
tree.move(a,e)

代码略长....

⑼ python的类中怎么实现动态化函数

给你这样一个例子吧,这个例子里面有动态增加类的函数。
声明一个类,类初始化的时候读取配置文件,根据配置列表加载特定目录下的模块下的函数,函数和模块同名,将此函数动态加载为类的成员函数。
代码如下所示:
class WinBAS(Bas):
def __init__(self):
self.__baslist = {}
self.__Init_Moles()
pass
def __Init_Moles(self):
import modplugs
for m in modplugs.__moleset__:
mh = __import__('moles.' + m)# + '.' + m)
ma = getattr(mh, m)# + '.' + m)
ma = getattr(ma, m)
setattr(self.__class__, m, ma)
modplugs.py是模块配置文件如下:
__moleset__ = [
'BAS_GetUserList',
]
然后建立目录moles下面建立一个空的__init__.py文件,把目录变为一个包,在moles目录下建立真正的BAS_GetUserList实现:BAS_GetUserList文件中有个BAS_GetUserList函数如下:
def BAS_GetUserList(self, strs):
return [0, strs]

这样WinBAS类就可以动态加入了BAS_GetUserList函数。

⑽ python的数据分解和动态传值,*的几个简单用

Python中内置了很多有用的数据结构,列表list , 集合set,字典dict.那今天我们就根据这几个数据结构来看看python中 * 的用法。*的作用,如果在函数参数中*表示的是不限的位置参数。*args,**kwargs则说明了python中函数的动态赋值用法。

热点内容
格式化linux 发布:2025-01-14 18:35:14 浏览:592
如何进入安卓原生市场 发布:2025-01-14 18:22:06 浏览:557
台式电脑找不到服务器 发布:2025-01-14 18:19:58 浏览:422
androidsdk网盘 发布:2025-01-14 18:17:43 浏览:79
个别用户访问不了腾讯云服务器 发布:2025-01-14 18:03:27 浏览:276
oracle链接sqlserver 发布:2025-01-14 17:58:33 浏览:729
sql完全手册 发布:2025-01-14 17:53:03 浏览:248
幻三脚本下 发布:2025-01-14 17:20:20 浏览:910
我的世界基岩版如何创自己的服务器 发布:2025-01-14 17:15:01 浏览:329
花果算法 发布:2025-01-14 17:09:57 浏览:775