请务必注意,Python程序是大小写敏感的,如果写错了大小写,程序会报错。
一. 标识符
一、标识符定义规则在 Python 里,标识符由字母、数字、下划线组成。
在 Python 中,所有标识符不能以数字开头。
Python 中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。
- 以单下划线开头
_foo
的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。 - 以双下划线开头的
__foo
代表类的私有成员,以双下划线开头和结尾的__foo__
代表 Python 里特殊方法专用的标识,如__init__()
代表类的构造函数。
- 以单下划线开头
下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。
and | exec | not |
assert | finally | or |
break | for | pass |
class | from | |
continue | global | raise |
def | if | return |
del | import | try |
elif | in | while |
else | is | with |
except | lambda | yield |
二. 缩进(代码块)
一、注意事项:学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号
{}
来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行!!!
- 按照约定俗成的管理,应该始终坚持使用4个空格的缩进;
- 很多Python程序员都建议每行不超过80字符(最多79个见多);
- 要将程序的不同部分分开,可使用空行,但不要在程序文件中过多地使用空行
以下代码将会执行错误:缩进空白数量不一样会报错!
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py
if True:
print "Answer"
print "True"
else:
print "Answer"
# 没有严格缩进,在执行时会报错
print "False"
执行以上代码,会出现如下错误提醒:
$ python test.py
File "test.py", line 10
print "False"
^
IndentationError: unindent does not match any outer indentation level
Python不像C/C++/Java一样一条语句是以
;
结束,而是换行即表示一个语句结束。缩进相同的一组语句构成一个代码块,我们称之代码组。
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号(
:
)结束,该行之后的一行或多行缩进代码构成代码组。注意这里冒号(:
)不能省略。
如下实例的冒号不能省略:
if expression :
suite
elif expression :
suite
else :
suite
三. 一行和多行语句
一行分为:
- 同一行显示多条语句;
- 将一行的语句分为多行显示(一条语句以多行来书写)也包括在多行语句里面来讲。
Python可以在同一行中使用多条语句,语句之间使用分号( ;
)分割,以下是一个简单的实例:
#!/usr/bin/python
import sys; x = 'runoob'; sys.stdout.write(x + '\n')
运行输出:
runoob
看下面的多行语句即可,是同一个意思。
多行:
- Python语句中一般以新行作为语句的结束符,但是我们可以使用斜杠(
\
)将一行的语句分为多行显示,斜杠(\
)称为多行连接符
。- 语句中包含 [], {} 或 () 括号就不需要使用多行连接符。
- Python语句中一般以新行作为语句的结束符。但是我们可以使用斜杠(
\
)将一行的语句分为多行显示,如下所示:
total = item_one + \
item_two + \
item_three
- 语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
四. 引号
Python 可以使用单引号(
'
)、双引号("
)、三引号('''
或"""
) 来表示字符串,引号的开始与结束必须的相同类型的。其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。
如下示例:
word = 'word'
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句"""
五. 注释
- python中单行注释采用
#
开头。 - python 中多行注释使用三个单引号(
'''
)或三个双引号("""
)。
单行注释,如下示例1:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py
# 第一个注释
print "Hello, Python!" # 第二个注释
多行注释,如下示例2:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py
'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''
"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""
六. 空行
- 函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
- 空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
- 记住:空行也是程序代码的一部分。
什么是空行?
a=2+3
print(a)
#这里就是空行
b=a+3
print(b)
七. 输出(print)
Python3.0以后的输出使用print()
函数。分为换行输出和不换行输出。
在print()括号中加上字符串,就可以向屏幕上输出指定的文字。括号里还可以放表达式等……
- 换行输出:print 默认输出是换行的
- 不换行输出:将括号里的所有参数输出在一行,只需要在每一个参数后面加一个
,
即可。注意:
- 最后一个参数后面没有
,
,也就是和普通函数使用一样;- 参数中间的
,
输出来是一个空格。如下:- 循环输出变量b的时候如果不换行,可在后面加个
end=' '
,即print(b, end=' ')
print('Thequickbrownfox', 'jumpsover', 'thelazydog')
运行结果:
Thequickbrownfox jumpsover thelazydog
7.1 输出的补充
Python的三种输出:
- Python两种输出值的方式: 表达式语句和
print()
函数;
- 如果你希望输出的形式更加多样,可以使用
str.format()
函数来格式化输出值。- 如果你希望将输出的值转成字符串,可以使用
repr()
或str()
函数来实现.- 第三种方式是使用文件对象的
write()
方法,标准输出文件可以用sys.stdout
引用!
7.2 输出时常用的函数
- str(): 将对象转化为适于人阅读的形式,函数返回一个对象的string格式。
- repr(): 将对象转化为供解释器读取的形式,返回一个对象的 string 格式。可以输出包括转义字符在内的所有字符!
end=' '
: 循坏输出时常用于不换行输出。- str.format() :格式化输出。
举例:
x = "'abcd\ne\nfg'"
print(str(x))
print(repr(x))
output:
'abcd
e
fg'
"'abcd\ne\nfg'"
------------------------------------------------------------------------------------------
'''repr() 的参数可以是 Python 的任何对象'''
x = 10 * 3.25
y = 200 * 200
print(repr((x, y, ('Google', 'Runoob'))))
output: (32.5, 40000, ('Google', 'Runoob'))
------------------------------------------------------------------------------------------
''' 我们都知道正常情况下将多个字符串输出在一行直接使用半角逗号,分隔即可。但是循坏输出要想不换行就得
使用 end=' '了 '''
a = [1,2,3,4,5,6]
for x in a:
print(x)
print('\n----------分隔符-----------')
for y in a:
print(y,end='')
print('\n----------分隔符-----------')
for y in a:
print(y,end='w')
print('\n----------分隔符-----------')
for y in a:
print(y,end=' ')
OUTPUT:
1
2
3
4
5
6
----------分隔符-----------
123456
----------分隔符-----------
1w2w3w4w5w6w
----------分隔符-----------
1 2 3 4 5 6
7.3 str.format()格式化字符串
旧式的格式化输出在[Python-基础语法]里面讲过,这里的str.format()
就是新版的格式化的一种形式。
语法:字符串类型格式化采用format()方法,基本使用格式是:
<模板字符串>.format(<逗号分隔的参数>)所谓的str.format():即.format()
前是一个字符串,字符串里面有{}
相当于旧书式的%
。{}
及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换。分为以下几种使用方法:
- 在括号中的数字用于指向传入对象在 format() 中的索引位置,如下所示:
print('{0} 和 {1}'.format('Google', 'Runoob'))
print('{1} 和 {0}'.format('Google', 'Runoob'))
OUTPUT:
Google 和 Runoob
Runoob 和 Google
- 在 format() 中使用了关键字参数, 那么它们的值会指向使用该名字的参数。也可以位置及关键字参数可以任意的结合:
print('{0} 和 {1}'.format('Google', 'Runoob'))
print('{1} 和 {0}'.format('Google', 'Runoob'))
print('站点列表 {0}, {1}, 和 {other}。'.format('Google', 'Runoob',
other='Taobao'))
OUTPUT:
Google 和 Runoob
Runoob 和 Google
站点列表 Google, Runoob, 和 Taobao。
- 在
{}
里使用!a
(使用 ascii()),!s
(使用 str()) 和!r
(使用 repr()) 可以用于在格式化某个值之前对其进行转化:
import math
print('常量 PI 的值近似为: {}。'.format(math.pi))
print('常量 PI 的值近似为: {!s}。'.format(math.pi))
OUTPUT:
常量 PI 的值近似为: 3.141592653589793。
常量 PI 的值近似为: 3.141592653589793。
- 可选项
:
和格式标识符可以跟着字段名。 这就允许对值进行更好的格式化。
format()方法中<模板字符串>的{}
除了包括参数序号,还可以包括格式控制信息。此时,{}
的内部样式如下:
其中,<格式控制标记>用来控制参数显示时的格式,包括:<填充><对齐><宽度>,<.精度><类型> 6 个字段,这些字段都是可选的,可以组合使用,逐一介绍如下。参考:[Python字符串格式化–format()方法]
<宽度>
指当前槽的设定输出字符宽度,如果该槽对应的format()参数长度比<宽度>设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。
<对齐>
指参数在<宽度>内输出时的对齐方式,分别使用<、>和^三个符号表示左对齐、右对齐和居中对齐。
<填充>
指<宽度>内除了参数外的字符采用什么方式表示,默认采用空格,可以通过<填充>更换。
s = "PYTHON"
"{0:30}".format(s)
Out[17]: 'PYTHON '
"{0:>30}".format(s)
Out[18]: ' PYTHON'
"{0:*^30}".format(s)
Out[19]: '************PYTHON************'
"{0:-^30}".format(s)
Out[20]: '------------PYTHON------------'
"{0:3}".format(s)
Out[21]: 'PYTHON'
逗号(,)
<格式控制标记>中逗号(,)用于显示数字的千位分隔符,例如:
"{0:-^20,}".format(1234567890)
Out[24]: '---1,234,567,890----'
"{0:-^20}".format(1234567890) #对比输出
Out[25]: '-----1234567890-----'
"{0:-^20,}".format(12345.67890)
Out[26]: '----12,345.6789-----'
<.精度>
表示两个含义,由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。
<类型>
表示输出整数和浮点数类型的格式规则。对于整数类型,输出格式包括6 种:
- b: 输出整数的二进制方式;
- c: 输出整数对应的 Unicode 字符;
- d: 输出整数的十进制方式;
- o: 输出整数的八进制方式;
- x: 输出整数的小写十六进制方式;
- X: 输出整数的大写十六进制方式;
>>> table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}
>>> for name, number in table.items():
... print('{0:10} ==> {1:10d}'.format(name, number))
...
Runoob ==> 2
Taobao ==> 3
Google ==> 1
对于浮点数类型,输出格式包括4 种:
- e: 输出浮点数对应的小写字母 e 的指数形式;
- E: 输出浮点数对应的大写字母 E 的指数形式;
- f: 输出浮点数的标准浮点形式;
- %: 输出浮点数的百分形式。
- 如果你有一个很长的格式化字符串, 而你不想将它们分开, 那么在格式化时通过变量名而非位置会是很好的事情。
最简单的就是传入一个字典, 然后使用方括号 []
来访问键值 :
>>> table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}
>>> print('Runoob: {0[Runoob]:d}; Google: {0[Google]:d}; Taobao: {0[Taobao]:d}'.format(table))
Runoob: 2; Google: 1; Taobao: 3
也可以通过在 table 变量前使用 '**' 来实现相同的功能:
>>> table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}
>>> print('Runoob: {Runoob:d}; Google: {Google:d}; Taobao: {Taobao:d}'.format(**table))
Runoob: 2; Google: 1; Taobao: 3
八. 输入(input)
- 函数input()让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其存储在一个变量(指针)中,以方便你使用。
- input()函数有个返回值,返回类型为String。
输入分为两种:空参数、带有参数。
空参数:input()
;效果是屏幕上没有任何提示,等待用户输入。带有参数:
input('请输入一个字符串:')
;效果是屏幕上显示“请输入一个字符串:”,然后等待用户输入。二、返回值
关于input()的返回值,是字符串String类型
如下会报错,假如输入1998,返回给s的值是字符串”1998”,如果直接和数字型进行比较会报错:
s = input('birth: ')
birth = s
if birth < 2000:
print('00前')
else:
print('00后')
解决方法是使用函数int(str)
,功能是将字符串类型转换成数字型。
s = input('birth: ')
birth = int(s)
if birth < 2000:
print('00前')
else:
print('00后')