按标签归档:python

从dir学到的

dir函数可以接受任何类型参数,如类型,对象,模块等. 下面一段程序将说明dir一个模块,类,对象时的情况: 先写一个模块: class Person: def __init__(self,name): self.name = name def getName(self): return self.name heyhey = Person(“jeff”) 另存为一个文件testdir.py 然后在控制台输入: import testdir >>> dir(testdir) ['Person', '__builtins__', '__doc__', '__file__', '__name__', 'heyhey'] # 这里,列出整个模块里面包含的对象,不管是内置函数还是类,还是变量.Person是一个类,Heyhey是一个变量. >>> dir(testdir.Person) ['__doc__', '__init__', '__module__', 'getName'] #这里列出Person类的所有方法和显示定义的属性,在构造函数里面出现有属性是没有出现,注意dir一个类实例的情况: >>> dir(testdir.heyhey) ['__doc__', '__init__', '__module__', 'getName', 'name'] #实际上是dir一个Person对象.这个对象因为通过构造函数生成.而在执行构造函数的时候有了一个name的属性.这就是dir类与类实例有区别的原因,推而广之,dir不同的实例也有可能得到不一样的结果. 而这个,就是动态语言的”动态”之处鸟.卡卡.

分类:技术 | 标签: | 发布评论

麻雀虽小,五脏俱全--一个简单python程序剖析

Python代码如下: def buildConnectionString(params): “””Build a connection string from a dictionary of parameters. Returns string.””” return ”;”.join(["%s=%s" % (k, v) for k, v in params.items()]) if __name__ == ”__main__”: myParams = {“server”:”mpilgrim”,”database”:”master”, “uid”:”sa”, “pwd”:”secret”              } print buildConnectionString(myParams) 这是来自Dive into python一书上开头的程序,简单的一段程序里却包括了python的多个内置类及格式化输出、遍历、方法、注释等。 一、“”“ ”“”所包括部分为文档化注释,有如Java的/***/ 二、方法的声明语法:def functionName(params):方法体需要缩进,这是python的特性 三、字典类型,{}表示字典,字典的形式是key:value的。 四、数组类型,[]表示此为一数组,元素可以是任何类型。 五、元组类型,()表示元组,元组即不可变数组。 六、格式化输出:print “name=%s,age=%d” % (“jeff”,24),跟C的格式化输出差不多,后面总是跟着一个元组。 七、数组的映射,由一个数组开始,对数组的每一个元素进行同样的操作,然后变成另一个数组。 >>> li = [1, 9, 8, 4] >>> [elem*2 for elem in li] [2, 18, … 继续阅读

分类:技术 | 标签: | 发布评论

python的内置类型(1)

1、真假值类型 与Javascript一样地,或者说这是脚本语言的相同特性,python的任何对象都可以出现在真假表达式中,即if obj,或while obj。下面是一些被认为是False的值: None,False,数值类型的0值,空队列()、[],空字典 {},而对于用户自定义的类型,如果实现了方法__nonzero__()返回False值或__len__()方法返回0值的。 2、布尔值的操作符: and 与 or 或 not 非 3、比较操作符: <、<=、>、>=、!=、<>、is、is not。浅而易明。明显地。 4、数据类型: int,long,float,complex即整数,长整型,浮点型,复数。 python 的int 相当于c的long 2的32次方的范围 python的long型无限制地使用的。 python的float相当于c的double类型,实际上可以用尽你的计算机的资源。 复数有实部及虚部,如c = 1+2j,如实部可通过c.real获得,虚部即镜像,可能过c.imag获得。 long型的数值常在后面加上L或l,复数的虚部加上j或J 5、整数的位操作: x|y 位或操作 x^y x&y 位与操作 x<<n 位左移操作=””> x>>n 位右移操作 ~x 非 … 继续阅读

分类:技术 | 标签: | 发布评论

python的动态参数

动态参数是样很神奇的东西。我写了下面一段代码: class Person: def __init__(self,*pros,**attrs): self.name = ”jeff” self.pros = pros for (key,value) in attrs.items(): stm = ”self.%s = \”%s\””% (key,value) exec(stm) if __name__ == ”__main__”: jeff = Person(1,2,3,sex=”boy”) print jeff.pros print jeff.sex print dir(jeff) 打印出来的内容是 (1, 2, 3) boy ['__doc__', '__init__', '__module__', 'name', 'pros', 'sex'] 简单解释一下: 参数以一个*号开头的代表着一个任意长度的数组,可以接收连续一串参数,如上面代码里传的是1,2,3,你可以更多。 参数以两个*号开头的代表着一个字典,参数的形式是“key=value”,接受连续任意多个参数。 在函数内,我们就可以把前者当作一个元组来处理,打印结果看得出来是一个元组。注意,调用方法是参数不定长,而在方法执行的时候,长度已定了,所以是元组。同时,我们可以把后者当作一个字典来处理。 示 例代码里使用可变长参数实现了一个类属性的个性化定制,对于一个Person类,你可以通过传入字典类型的参数使这个类有更多原来不存在的属性,实现方法 是用了exec方法,目前只能通过字符串的参数。这里只是展示了可变参数的使用及exec的神奇力量。真正的函数不应该允许任意用户自定义属性的,可变参 数的目的是为定义函数方便及调用函数时,参数传入形式更自由而已。

分类:技术 | 标签: | 发布评论

python猜数小游戏

用Python写了一个猜数的小游戏。很简单,电脑抽一个0到100的随机数,玩家猜电脑里的数字是什么,并视玩家所猜的数而给出太大或太小的提示,一直玩到猜中为止,程序将记录玩家所猜的次数。 程序涉及了控制台输入输出,数据类型转换,随机数,异常捕捉等。 #!/usr/bin/python ”’ this is a number guessing game.the computer make a random number and store into the memory.the player guess what the number is.the computer will give the tips. ”’ from random import Random import sys class GuessNumberGame: … 继续阅读

分类:技术 | 标签:, | 发布评论

关于Python的Type,Module,Class

type? 注意,Python里面任何东西都是对象,但并不是任何东西都是类! 看下面一段程序及说明(来自Dive into python): 例 4.5. type 介绍 >>> type(1)           .1 <type ‘int’> >>> li = [] >>> type(li)          .2 <type ‘list’> >>> import odbchelper >>> type(odbchelper)  .3 <type ‘module’> … 继续阅读

分类:技术 | 标签:, , | 发布评论