1.使用三引号('''或""")
利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。例如:
str='''This is a multi-line string. This is the first line.
This is the second line.
"What's your name?," I asked.
He said "Bond, James Bond."
'''
2.自然字符串
如果你想要指示某些不需要如转义符那样的特别处理的字符串(转义符号无效),那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀r
或R
来指定。例如 str=r"Newlines are indicated by \n"
。
print(str)结果为:Newlines are indicated by \n。
一定要用自然字符串处理正则表达式。否则会需要使用很多的反斜杠。例如,后向引用符可以写成'\\1'或r'\1'。
3.字符串是不可变的
这意味着一旦你创造了一个字符串,你就不能再改变它了。
4.按字面意义级连字符串
如果你把两个字符串按字面意义相邻放着,他们会被Python自动级连。例如,'What\'s' ' your name?'
会被自动转为"What's your name?"
。
5.对象
就每一个东西包括数、字符串甚至函数都是对象这一点来说,Python是极其完全地面向对象的。
6.变量
使用变量时只需要给它们赋一个值。不需要声明或定义数据类型。
7.逻辑行和物理行
如果你想要在一个物理行中使用多于一个逻辑行,那么你需要使用分号(;)来特别地标明这种用法。分号表示一个逻辑行/语句的结束。例如:i=5;print(i)
在多个物理行中写一个逻辑行的例子。它被称为明确的行连接。
s =
'This is a string. \
This continues the string.'
print(
s)
输出结果为:This is a string. This continues the string.
在逻辑行中使用了圆括号、方括号或波形括号的时候,也可以使多个物理行对应一个逻辑行,这被称为暗示的行连接。
str=[1,23,"hello"
,"ok"]
print(str)
结果为:[1, 23, 'hello', 'ok']
8.运算符及它们的用法
*乘两个数相乘或是返回一个被重复若干次的字符串2 * 3得到6。'la' * 3得到'lalala'
/除x除以y4/3得到1.333333333333 与C语言不同 4.0/3或4/3.0得到1.3333333333333333
// 取整除返回商的整数部分4 // 3.0得到1.0
% 取模 返回除法的余数8%3得到2。-25.5%2.25得到1.5,可以应用与浮点数
~ 按位翻转(包括符号位也翻转)x的按位翻转是-(x+1)~5得到-6
not布尔“非”如果x为True,返回False;如果x为False,它返回True。x = 0; not x返回True
and 布尔“与” 如果x为False,x and y返回False,否则它返回y的计算值。 x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是 False(因为x是False)。这个现象称为短路计算。举例:2 and 4,返回4;0 and 4,返回0。
or 布尔“或” 如果x是True,它返回True,否则它返回y的计算值。 x = True; y = False; x or y返回True。短路计算在这里也适用。举例:1 or 5,返回1;0 or -1,则返回-1.
9.Python的print 格式化输出
python3 实现print不换行:
print("sxh",end="")
print("love")
输出:sxhlove
print("sxh",end="_")
print("love")
输出:sxh_love
10.格式化输出浮点数(float)
import math
#default
print "PI = %f" % math.pi
#width = 10,precise = 3,align = left
print "PI = %10.3f" % math.pi
#width = 10,precise = 3,align = rigth
print "PI = %-10.3f" % math.pi
#前面填充字符
print "PI = %06d" % int(math.pi)
#输出结果
#PI = 3.141593
#PI = 3.142
#PI = 3.142
#PI = 000003
11.格式化输出字符串(string)
#precise = 3
print "%.3s " % ("jcodeer")
#precise = 4
print "%.*s" % (4,"jcodeer")
#width = 10,precise = 3
print "%10.3s" % ("jcodeer")
#输出结果:
#jco
#jcod
# jco
另外:%-10s和%-10f结果是不同的,%-10f是右对齐,而%-10s是左对齐。
%10s和%10f结果是不同的,%10f是左对齐,而%10s右左对齐。
12.控制流
注意我们使用了缩进层次来告诉Python解释器每个语句分别属于哪一个块。这就是为什么缩进在Python如此重要的原因。
注意if
语句在结尾处包含一个冒号——我们通过它告诉Python解释器下面跟着一个语句块。
elif
和else
从句都必须在逻辑行结尾处有一个冒号,下面跟着一个相应的语句块(当然还包括正确的缩进)。
在Python中没有switch语句。你可以使用if..elif..else语句来完成同样的工作(在某些场合,使用字典会更加快捷)。
for循环:记住,else
部分是可选的。如果包含else,它总是在for
循环结束后执行一次,除非遇到break语句。
一个重要的注释是,如果你从for
或while
循环中 终止 ,任何对应的循环else
块将不执行。
13. global 语句
如果你想要为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是 全局 的。我们使用global
语句完成这一功能。没有global
语句,是不可能为定义在函数外的变量赋值的。
你可以使用定义在函数外的变量的值(假设在函数内没有同名的变量)。然而,我并不鼓励你这样做,并且你应该尽量避免这样做,因为这使得程序的读者会不清楚这个变量是在哪里定义的。使用global
语句可以清楚地表明变量是在外面的块定义的。
下面举几个例子:
def func():
print("x is %d" %x) #x是全局的变量
x=50
func()
def func():
x=2 #x是局部的变量
print("x is %d" %x)
x=50
func()
def func():
print("x is %d" %x) #UnboundLocalError: local variable 'x' referenced before assignment
x=2
print("changed local x to %d" %x)
x=50
func()
global x
print("x is %d" %x)
x=2 #x是全局的x
print("changed local x to %d" %x)
x=50
func()
14.关键参数
如果你的某个函数有许多参数,而你只想指定其中的一部分,那么你可以通过命名来为这些参数赋值——这被称作 关键参数 ——我们使用名字(关键字)而不是位置(我们前面所一直使用的方法)来给函数指定实参。
这样做有两个优势,由于我们不必担心参数的顺序,使用函数变得更加简单了。二、假设其他参数都有默认值,我们可以只给我们想要的那些参数赋值。
15.模块的__name__
if __name__ == '__main__':
print(__name__)
else:
print(__name__)
如果直接运行slave.py文件则输出“__main__”,如果是slave模块被其他模块导入,则输出slave。
15.del 变量或者函数或者类
关于del
注释——这个语句在运行后被用来 删除 一个变量/函数名称。del 名称;之后,
你将无法再使用变量或者函数——它就好像从来没有存在过一样。
16.类与对象的变量
事实上,它们只是与类和对象的名称空间 绑定 的普通变量,即这些名称只在这些类与对象的前提下有效。有两种类型的 域 ——类的变量和对象的变量,它们根据是类还是对象 拥有 这个变量而区分。
类的变量 由一个类的所有对象(实例)共享使用。只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。
对象的变量 由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是是互不相关的。
self.name
的值根据每个对象指定,这表明了它作为对象的变量的本质。
记住,你只能使用self
变量来参考同一个对象的变量和方法。这被称为 属性参考 。
(类的变量,使用类名和对象名都可访问),对象的属性只能使用对象名和self访问。
就如同__init__
方法一样,还有一个特殊的方法__del__
,它在对象消逝的时候被调用。对象消逝即对象不再被使用,它所占用的内存将返回给系统作它用。当对象不再被使用时,__del__
方法运行,但是很难保证这个方法究竟在 什么时候 运行。如果你想要指明它的运行,你就得使用del
语句,就如同我们在以前的例子中使用的那样。Python中所有的类成员(包括数据成员)都是 公共的 ,所有的方法都是 有效的 。
只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如__privatevar,Python的名称管理体系会有效地把它作为私有变量。
17.文件
你可以通过创建一个file
类的对象来打开一个文件(f = file('poem.txt', 'w') # open for 'w'riting),分别使用file
类的read
、readline
或write
方法来恰当地读写文件。对文件的读写能力依赖于你在打开文件时指定的模式。最后,当你完成对文件的操作的时候,你调用close
方法来告诉Python我们完成了对文件的使用。
我们使用readline
方法读文件的每一行。这个方法返回包括行末换行符的一个完整行。所以,当一个 空的 字符串被返回的时候,即表示文件末已经到达了,于是我们停止循环。
注意,因为从文件读到的内容已经以换行符结尾,所以我们在print
语句上使用end=''来消除自动换行。最后,我们用close
关闭这个文件。