25、三引号
python中用三引号可以引用大段文字,且中间可以书写任意单双引号
26、原意字符
当一段字符串中有太多需要转义的符号时,可以使用原意字符,避免总是转义 print(r”this is a newline simbol:\n.and that is a simbol:*”) 双引号中原样显示。
27、python自省
dir(对象)---可以查看此对象有哪些方法和属性
dir(__builtins__)查看有哪些内建函数
help(命令)---查看命令的使用方式
print(logging.__file__)----查看logging模块的位置
28、print的参数
print(value1,…,sep= ‘ ’,end=’\n’,file=sys.stdout,flush=false)
默认是各参数之间空格分割,最后一个参数之后换行,如果有其他打印需求,可以修改参数。
29、打印出注释文字
def print_abc:
“””打印出abc字符串”””
print(“abc”)
print(print_abc.__doc__)
说明:函数或者类的说明文档,必须在函数或类定义的行后面,且在第一个语句的前面。
30、行连接符”\”
当输出一个字符串,但是字符串太长,在代码中要换行,但又不能在显示中换行时,使用行连接符“\”
print(“这是一个很唯美的故事,\
故事的女主人公很美。”)
31、静态方法、类方法
创建静态方法:
@staticmethod
def method_name()
创建类方法:
@Classmethod
def method_name()
静态方法和类方法既可以供类调用,又可以供类的实例调用。
而实例方法只能供类的实例调用,不能供类调用。
class Name:
@staticmethod
def name1():
print(“name1”)
@classmethod
def name2():
print(“name2”)
def name3():
print(“name3”)
Name.name3() #调用会出错
Name().name3() #实例化的调用,正确
35、类的变量、实例的变量
python的类变量和C++的静态变量不同,并不是由类的所有对象共享。类本身拥有自己的类变量(保存在内存),当一个TestClass类的对象被构造时,会将当前类变量拷贝一份给这个对象,当前类变量的值是多少,这个对象拷贝得到的类变量的值就是多少;而且,通过对象来修改类变量,并不会影响其他对象的类变量的值,因为大家都有各自的副本,更不会影响类本身所拥有的那个类变量的值;只有类自己才能改变类本身拥有的类变量的值
Class Name:
test = 1
def __init__(self):
self.test1 = 2
a = Name
b = Name()
print(a.test, b.test, b.test1) #如果a.test1则报错
类可以访问类的变量,不能访问实例的变量。实例可以访问类的变量和实例的变量。
36、继承和调用
class Parent:
def __init__(self):
self.name = ‘name’
class Child(Parent):
name1 = ‘name1’
def __init__(self):
self.name2 = ‘name2’
def print1(self):
print(self.name1) #正确,因为init函数中没有成员变量name1,self就指向类的变量name1。如果类的变量和成员变量中有相同的name1,则指向成员变量name1.
class Child(Parent):
name3 = ‘name3’
def print1(self):
print(self.name3) #正确,没有定义实例的变量。self指向类的变量。
print(self.name1) #正确,没有定义类的成员变量,self指向父类的成员变量
37、执行系统命令
(1)import os
os.system(“command”)
仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息
(2)os.popen()
tmp = os.popen(‘ls *.sh‘).readlines()
该方法不但执行命令还返回执行后的信息对象。好处在于:将返回的结果赋于一变量,便于程序的处理
(3)使用模块subprocess
import subprocess
p = subprocess.Popen(‘ls *.sh‘, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print p.stdout.readlines()
for line in p.stdout.readlines():
print line,
retval = p.wait()
好处在于:运用对线程的控制和监控,将返回的结果赋于一变量,便于程序的处理。
当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess,如果使用os.popen则会出现错误