Python高级

python编程技巧集合

print print不换行(python3) print ('www.',end="") print ('zhaoyabo.com',end="") 输出: www.zhaoyabo.com 如果报错 end那儿invalid syntax,可能是因为python版本为2.7 动态百分比 import time for i in range(100): # 此处为运行代码 print("\r进度为%d%%"%i,end="") 原理:\r 表示将光标的位置回退到本行的开头位置

类命名空间

所有位于 class 语句中的代码,其实都位于特殊的命名空间中,通常称之为类命名空间。 Python 中,编写的整个程序默认处于全局命名空间内,而类体则处于类命名空间内。 Python 允许在全局范围内放置可执行代码,当 Python 执行该程序时,这些代码就会获得执行的机会。 类似地,Python 同样允许在类范围内放置可执行代码,当 Python 执行该类定义肘,这些代码同样会获得执行的机会。 例如,如下程序测试了类命名空间: class Item:    # 直接在类空间中放置执行性质代码     print(‘正在定义Item类’) for i in range(10):   if i % 2 == 0 :       print(‘偶数:’, i)   else:         print(‘奇数:’, i)   运行结果为: 正在定义Item类 偶数: 0奇数: 1 偶数: 2 奇数: 3 偶数: 4 奇数: 5 偶数: 6 奇数: 7 偶数: 8 奇数: 9 正如从上面代码所看到的,程序直接在 Item 类体中放置普通的输出语句、循环语句、分支语句,这都是合法的。当程序执行 Item 类时,Ite...

类调用

Python 的类在很大程度上可看做是一个独立的空间(称为类命名空间),当程序在类体中定义变量、方法时,与前面介绍的定义变量、定义函数其实并没有太大的不同。 对比如下代码: # 定义全局空间的foo函数def foo ():print(“全局空间的foo方法”)# 全局空间的bar变量bar = 20class Bird: # 定义Bird空间的foo函数 def foo(): print(“Bird空间的foo方法”) # 定义Bird空间的bar变量bar = 200# 调用全局空间的函数和变量foo()print(bar)# 调用Bird空间的函数和变量Bird.foo()print(Bird.bar) 上面代码在全局空间和 Bird 类(Bird 空间)中分别定义了 foo() 函数和 bar 变量,从定义它们的代码来看,几乎没有任何区别,只是在 Bird 类中定义它们时需要缩进。 接下来程序在调用 Bird 空间内的 bar 变量和 foo() 函数(方法)时,只要添加 Bird. 前缀即可,这说明完全可以通过 Bird 类来调用 foo() 函数(方法)。这就是类调用实例方法的证明。 现在问题来了,如果使用类调...

实例方法、静态方法和类方法

和类属性可细分为类属性和实例属性一样, 类中的方法也可以有更细致的划分,具体可分为类方法、实例方法和静态方法,本节将详细介绍这 3 种类方法的特点和用法。 Python类实例方法 通常情况下,在类中定义的方法默认都是实例方法。前面章节中,我们已经定义了不只一个实例方法。不仅如此,类的构造方法理论上也属于实例方法,只不过它比较特殊。 例如: class Person : #类构造方法,也属于实例方法 def __init__(self, name = ‘Charlie’, age=8): self.name = name self.age = age # 下面定义了一个say实例方法 def say(self, content): print(content) 实例方法最大的特点就是,它最少也要包含一个 self 参数,用于绑定调用此方法的实例对象。 实例方法通常会用类对象直接调用,当然也可以用类名调用, 例如: #创建一个类对象 person = Person() #类对象调用实例方法 person.say(“类对象调用实例方法”) #类名调用实例方法,需手动给 self 参数传值 Person.say(person,”类...

self用法详解

第一个参数必须是self 无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将 self 参数作为方法的第一个参数。 例如,定义如下 Dog 类: class Dog: def __init__(self): print(“正在执行构造方法”) # 定义一个jump()实例方法 def jump(self): print(“正在执行jump方法”) Python 要求,类方法(构造方法和实例方法)中至少要包含一个参数,但并没有规定此参数的名称(完全可以叫任意参数名),之所以将类方法的第一个参数命名为 self,只是 Python 程序员约定俗成的一种习惯,这会使程序具有更好的可读性。 self 参数的具体作用 打个比方,如果把类比作造房子的图纸,那么对类实例化后的对象才是真正可以住的房子。 根据一张图纸,我们可以设计出成千上万的房子,虽然每个房子长相相似,但它们都有各自的主人。 而类方法的 self 参数,就相当于每个房子的门钥匙,它可以保证,每个房子的主人仅能进入自己的房子。 如果你接触过其他面向对象的编程语言(例如 C++),其实 Python 类方法中的 sel...