语句
1.一个语句如果过长,可以用\来换行
例如:
x = 10
y = 20
if x == y \
or \
x > y:
print True
else:
print False
2.如果语句中由括号括起来,那么就可以用直接换行
例如:
a = {
'like':'fruit',
'unlike':'gralic'
}
print a
结果: {‘like’: ‘fruit’, ‘unlike’: ‘gralic’} |
3.使用三引号”’也可以用来折行
例如:
print '''hello,
world'''
结果:
缩进
在Python中,同一语句块中的代码必须保持严格的左对齐(有相同的空格数).
变量
多重赋值:可以同时给多个变量赋相同的值.
例如:
a = b = c = 1
多元赋值:可以同时给不同的变量赋值
例如:
a,b = 1,2
两个 数交换:
a,b = 10,20
print a,b
a,b = b,a #diao炸天
print a,b
结果: 10 20 20 10 |
!!!bool类型也可以交换
True,False = False,True
if True:
print 'ku~'
else:
print 'wa~'
结果:wa~
作用域与生命周期
在Python中,def,class,lamda会改变变量的作用域.
而使用的条件语句循环语句是不会改变变量的作用域的.
例如:
# coding=utf-8
for i in range(0,10):
print i, #逗号的作用是不换行
print i #出了作用域还可以访问
但是,如果使用了def定义了函数出了作用域就不可以再被访问了.
例如:
# coding=utf-8
def fun():
for i in range(0 ,10):
print i,
fun()
print i #i出了fun函数就会失效
结果:
内建函数globals()返回的是全局作用域下的变量.
例如:
a = 10
b = [1,2,3,4,5]
print a,b
print globals()
结果:
内建函数locals()返回了局部作用域的变量.
对于Python变量的生命周期,Python提供了垃圾回收机制(GC机制)自动识别一个变量的生命周期是否走到尽头,并且在一定的周期内会自动释放空间. |
特殊标识符
- 使用下划线(_)作为变量的前缀和后缀,来标识特殊的标识符.
- _xx标识一个”私有变量”,要使用from moudule inport*无法导入.
文档字符串
即为自己的代码写一定的注释:
例如:
同样的:使用help(函数名)也可以来查看文档信息.
例如:
help(Compare)
注意:文档字符串一定要放在函数/类的开始位置,否则就无法使用_doc_或者help来访问了.
模块文档
同函数与类一样可以有一个文档字符串,一个模块也可以添加文档字符串.
例如:
#!/usr/bin/env python
# coding=utf-8
#Compare.py
'''
define function for compare two number
'''
def Compare(x,y):
return x > y
#test.py
import compare
print compare.__doc__
结果:
对象和类型
在Python中,一切皆对象.
常量:是对象.
字符串:是对象.
函数:是对象.
模块:是对象.
.
.
.
一个对象中包含:
- 身份:每一个对象都有一个唯一的身份表示自己(并不是地址),通过内建函数id()可以查看到这个标识的具体的值.(只要是对象,一定可以通过id()取到它的值) - 类型:对象的类型决定了对象保存的值,通过内建函数type()可以查看对象的类型. - 值:对象中保存的具体的值. |
对象和引用:
回顾一下在C语言中的变量:
例如:
int a = 10;
//创建了一个变量a,并为变量a分配了一块内存,然后将改地址的内容赋为10
但是在Python中不是这样的:
在解释器中敲下:
a = 10
#在内存中开辟一段空间,并将对象的值和类型填入.
如下图所示:
如果此时又存在一个变量:c = 100
那么就是这样的:
那么,此时如果将c重新赋为10
在Python中,变量名只是一个访问对象的”钥匙”,多个不同的变量可以访问相同的对象.所以这种变量名也叫作对象的”引用”.
例如:
a = 10
c = 10
print id(10)
print type(a)
print a
print id(c)
print type(c)
print c
结果:
a与c都是10的变量名.它们的id()相同,说明它们标识的是同一个变量.
所以:在C/C++中,如果多个变量名指向的变量内容相同,是在内存中很多值相同的变量.而Python中,对于变量值相同的多个变量名指向的是同一个变量.即例如上述例子中:Python中只有一个数字10,而如果是C/C++那么就可能是多个10.
那么:在Python中,对于赋值操作符,只是简单的移动了一下标签的位置.例如:a = b,a与b标识着同一块变量.
思考:
为什么在Python中这样设计:
因为在Python中提供GC机制(垃圾回收机制).但是也因此Python语言的性能下降,GC机制的消耗非常大.