关闭

缩进,注释,代码块,编译与优化,编码,运算符,切片

137人阅读 评论(0) 收藏 举报
分类:

缩进

        python不使用{}区分代码块,而使用缩进表示。因此python的缩进影响着代码的执行,影响着代码的内在逻辑,这与java、c是完全不同的。

        1,tab键与空格不能混用。

        2,缩进相同的代码属于同一代码块,同一代码块内的语句必须缩进相同。如下面的else中的代码码缩进必须相同,但不必与if中的相同。

if True:
    print("this is ")
else:
    print("false")
# 如果将此句也缩进一个tab,则该句属于else代码块。
print("测试中文!")

注释

        python中只有单行注释,使用"#[空格]"开头。

        如果注释与代码写在一行,则注释与代码之间最少需要两个空格。如

# 单独注释行不需要在前面隔两个空格
print("测试中文!")
print(True and False)  # 注释与前面的代码隔了两个空格

代码块

        缩进相同的一组语句构成一个代码块。像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码块。

编译

        python有三种文件格式:py结尾,pyc结尾以及pyo结尾。其中py结尾的是源文件,pyc结尾的是编译后的文件,pyo结尾的是优化后的文件。三种文件都可以通过python命令行进行运行。

编译某个文件的代码如下:

#coding:utf-8
import py_compile
py_compile.compile('1.py') # 编译1.py文件

编译后生成的文件以pyc结尾。

优化是使用python命令行执行的,如下:

python -O -m py_compile 1.py

        该命令行会生成pyo文件,也可以使用python 1.pyo运行该pyo文件。

编码

        使用vim开发时,会遇到"SyntaxError: Non-ASCII character"错误,这是因为python默认使用ASCII编码,而ASCII码不支持中文,而在源文件中有中文(不管是注释中的还是代码中的)。

        解决该错误很简单,只需要在文件前面加上#coding:utf-8即可,它将文件的编码改为utf-8格式,而utf-8支持中文。要注意的是该句必须放在前两行,如果放到别的地方将不会生效。

        有时候,即使添加了#coding:utf-8,编码的时候仍旧会报SyntaxError: (unicode error) 'utf-8',这是因为本地没有utf-8编码,可以将后面的utf-8换成gbk等别的编码形式。

运算符

        大部分与别的语言一样。

        //将商取整。比如3.0/2得到的结果是1.5,如果是3.0//2则得到的结果是1.0。

        **幂运算符。如2**3=8,它表示2的3次幂。

        *:操作数为两数字时,就是数学中的乘法。当操作数只有一个是数字时,就是将非数字重复一定次数。如"a"*3,则得到的结果就是aaa。

>>> b = "abc"*3
>>> print(b) # 对于非字符串也一样
abcabcabc

切片

        可以通过下标取字符串、元组、列表中的指定位置的元素,如果取某一个范围内的元素,可以通过下面代码完成:

L=[]
test = ('a','b','c','d','e','f')
for x in range(1,5): # 通过循环取成对应的下标
	L.append(test[x]) # 再通过下标取出对应的元素
print L

        切片是对该过程的简化,它可以直接指定某一个范围内的下标。如上面的循环可以写成test[1:5],其结果是一样的。其一般形式为:start:end:step

        start指开始下标,含。

        end指结束下标,不含。

        step指步长,步长为正则从start向右直到end,步长为负则从start往左直到end,不指定时步长默认为1。步长为正时,不指定start则start为0,不指定end则end为最后一个元素;步长为负时,不指定start则start为-1,不指定end则end为第一个元素对应的负下标。

        注意:所有的切片都是含头不含尾下标也可为负数,-1指的是最后一个元素,-2指倒数第二个元素,其余依次类推。

        start:end:step——三者都指定,则下标的取值为start,start+step,start+2*step……min(start+k*step,end),k尽量取最大。如:

L=[]
test = ('a','b','c','d','e','f')
print test[-5:5:1] # ('b', 'c', 'd', 'e')

        -5对应的是是'b',5对应的是'f',步长为正,所以从'b’往右一直到'f‘,由于含头不含尾,所以输出的是'b'到'e’。再比如:

L=[]
test = ('a','b','c','d','e','f')
print test[-2:2:-1] # ('e', 'd')

        步长为负,所以从'e'到'c',输出的就是'e'','d'。

        从上两例可以看出,start与end的大小,正负不影响结果,只需要根据步长从左往右或从右往左即可。





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11628次
    • 积分:761
    • 等级:
    • 排名:千里之外
    • 原创:68篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类