python学习笔记(四)

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函数中没有成员变量name1self就指向类的变量name1。如果类的变量和成员变量中有相同的name1,则指向成员变量name1.

 

class Child(Parent):

name3 = ‘name3’

def print1(self):

print(self.name3) #正确,没有定义实例的变量。self指向类的变量。

print(self.name1) #正确,没有定义类的成员变量,self指向父类的成员变量

37、执行系统命令

1import 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则会出现错误

posted @ 2017-12-12 22:57  雅虎跳跳  阅读(122)  评论(0编辑  收藏  举报