Python学习
基础语法
标识符
在Python中,标识符由字母、数字、下划线组成,不能以数字开头。
以下划线开头的标识符:具有特殊意义。
1. 以单下划线开头_identifier
代表不能直接访问的类属性,只能通过类提供的接口访问,不能用from xxx import *
导入。
2. 以双下划线开头__identifier
代表类的私有成员。
3. 以双下划线开头及结尾__identifier__
代表Python里特殊方法专用的标识,如__init__()
代表类的构造函数。
Python同一行可以显示多条语句,用;
隔开。
保留字符
行与缩进
Python最大特色:使用缩进来写模块。
缩进空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量。
错误提醒:IndentationError: unindent does not match any outer indentation level
if True:
print("True")
else:
print("False")
多行语句
Python一般用新行作为语句的结束符。
但可以用\
将一行内容分为多行显示
total = item_one + \
item_two + \
item three + \
语句包含
[]
或{}
或()
则不需要多行连接符。
num = {'1','2',
'3','4'}
引号'
"
'''
或"""
引号用于表示字符串。
'
:单引号
"
:双引号
'''
或"""
:三引号
三引号可由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点被用作注释。
注释
单行注释:以#
开头
多行注释:使用三引号'''
或"""
空行
空行用于表示新一段代码的开始,用于函数之间或类方法之间。类和函数的入口之间也用一行空行分割,用于突出函数入口的开始。
空行仅用于分割,书写不插入空行,Python解释器运行也不会出错。只是便于日后代码的维护或重构。
等待用户输入
raw_input("please input:")
print输出
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号
,
。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
x="a"
y="b"
# 换行输出
print x
print y
print '---------'
# 不换行输出
print x,
print y,
# 不换行输出
print x,y
Python的命令行参数
我们在使用脚本形式执行 Python 时,可以接收命令行输入的参数。
-d 在解析时显示调试信息
-O 生成优化代码 ( .pyo 文件 )
-S 启动时不引入查找Python路径的位置
-V 输出Python版本号
-X 从 1.6版本之后基于内建的异常(仅仅用于字符串)已过时。
-c cmd 执行 Python 脚本,并将运行结果作为 cmd 字符串。
file 在给定的python文件执行python脚本。
$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser (also PYTHONDEBUG=x)
-E : ignore environment variables (such as PYTHONPATH)
-h : print this help message and exit
[ etc. ]
变量、运算符、语句、数据类型
多变量赋值
a = b = c = 1
a, b, c = 1, 2, "abc"
标准数据类型
- Numbers:数字
- String:字符串
- List:列表
- Tuple:元组
- Dictionary:字典
Numbers:数字
数字数据类型用于存储数值。
他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。
#创建对象
var1 = 1
var2 = 2
#删除引用
del var1, var2
四种不同的数字类型:
- int:有符号整型(Python3.x数据溢出后自动转long)
- long:长整型,可用于表示八进制和十六进制 (Python 3.x已被移除)
- float:浮点型
- complex:复数
长整型也可以使用小写 l,但是还是建议您使用大写 L,避免与数字 1 混淆。Python使用 L 来显示长整型。
Python 还支持复数,复数由实数部分和虚数部分构成,可以用a + bj
,或者complex(a,b)
表示, 复数的实部 a 和虚部 b 都是浮点型。
实例
String:字符串
python的字串列表有2种取值顺序:
* 从左到右索引默认0开始的,最大范围是字符串长度少1
* 从右到左索引默认-1开始的,最大范围是字符串开头
如果你要实现从字符串中获取一段子字符串的话,可以使用
[头下标:尾下标]
来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
[头下标:尾下标]
获取的子字符串包含头下标的字符,但不包含尾下标的字符。
>>> s = "abcdef"
>>> s[1:5]
'bcde'
>>> s[3:-1]
'de'
>>> s[:-1]
'abcde'
>>> s[-1:-5]
''
>>> s[-5:-1]
'bcde'
>>> s[1:]
'bcdef'
>>> s[1]
'b'
>>> s[-1]
'f'
加号(+)是字符串连接运算符,星号(*)是重复操作。
# -*- coding: UTF-8 -*-
str = 'Hello World!'
#Python 2.x
print str # 输出完整字符串
print str[0] # 输出字符串中的第一个字符
print str[2:5] # 输出字符串中第三个至第六个之间的字符串
print str[2:] # 输出从第三个字符开始的字符串
print str * 2 # 输出字符串两次
print str + "TEST" # 输出连接的字符串
List:列表
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用[ ]
标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量[头下标:尾下标]
,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
加号(+)是字符串连接运算符,星号(*)是重复操作。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个元素
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表
Tuple:元组
元组是另一个数据类型,类似于 List(列表)。
元组用()
标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
print tuple # 输出完整元组
print tuple[0] # 输出元组的第一个元素
print tuple[1:3] # 输出第二个至第四个(不包含)的元素
print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2 # 输出元组两次
print tuple + tinytuple # 打印组合的元组
Dictionary:字典
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用{ }
标识。字典由索引(key)和它对应的值value组成。
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'}
print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
数据类型转换
算术运算符
比较运算符
赋值运算符
位运算符
逻辑运算符
成员运算符
身份运算符
运算符优先级
语句
- 条件语句
flag = False
name = 'luren'
if name == 'python': # 判断变量是否为 python
flag = True # 条件成立时设置标志为真
print 'welcome boss' # 并输出欢迎信息
else:
print name # 条件不成立时输出变量名称
- while循环
while 判断条件(condition):
执行语句(statements)……
- for循环
for iterating_var in sequence:
statements(s)
- 循环嵌套
#for
for iterating_var in sequence:
for iterating_var in sequence:
statements(s)
statements(s)
#while
while expression:
while expression:
statement(s)
statement(s)
- break语句
- continue语句
- pass语句 : Python pass 是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。
# 输出 Python 的每个字母
for letter in 'Python':
if letter == 'h':
pass
print '这是 pass 块'
print '当前字母 :', letter
print "Good bye!"
math 模块、cmath 模块
Python 中数学运算常用的函数基本都在 math 模块、cmath 模块中。
Python math 模块提供了许多对浮点数的数学运算函数。
Python cmath 模块包含了一些用于复数运算的函数。
cmath 模块的函数跟 math 模块函数基本一致,区别是 cmath 模块运算的是复数,math 模块运算的是数学运算。
要使用 math 或 cmath 函数必须先导入:import math
- 查看math包中的内容
>>> import math
>>> dir(math)
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
>>>
- 查看cmath包中的内容
>>> import cmath
>>> dir(cmath)
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
>>>