文章目录
交互式运行
可以不用写文件,直接CLI执行以下命令
python
就可以继续如同cli界面运行,及时反馈
下划线
以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。
以双下划线开头的 foo 代表类的私有成员,以双下划线开头和结尾的__foo 代表 Python 里特殊方法专用的标识,如 init() 代表类的构造函数。
缩进
为了避免各种系统带来阅读上的差异,使用空格代替tab,一般采用4个
引号
- 单引号
- 双引号
- 三个单引号
变量赋值
a = b = c = 1
a, b, c = 1, 2, "john"
pass
Python pass 是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 输出 Python 的每个字母
for letter in 'Python':
if letter == 'h':
pass
print '这是 pass 块'
print '当前字母 :', letter
print "Good bye!"
执行后结果如下
当前字母 : P
当前字母 : y
当前字母 : t
这是 pass 块
当前字母 : h
当前字母 : o
当前字母 : n
Good bye!
注意h还是被打印了,这说明pass和continue是不一样的,pylthon本身也是有continue的
list
数据类型
python的列表中数据类型可以不一样,这点和java.util.List更像,和[]倒是不一样
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
元组
元组相当于只读的list
运算
幂
** 幂 - 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000
取整除
// 取整除 - 返回商的整数部分(向下取整)
>>> 9//2
4
>>> -9//2
-5
逻辑运算符
and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
or x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False
注意python使用的是单词而不是符号来进行逻辑运算
成员运算符
in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True
is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
控制语句
if & while
这个和java类似,只是用后接冒号代替了用括号括起来
for
var
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for letter in 'Python': # 第一个实例
print '当前字母 :', letter
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二个实例
print '当前水果 :', fruit
print "Good bye!"
这种foreach的方式在java中称为增强的for循环
index
#!/usr/bin/python
# -*- coding: UTF-8 -*-
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print '当前水果 :', fruits[index]
print "Good bye!"
这种是通过下标来取数据
else
常规使用
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for num in range(10,20): # 迭代 10 到 20 之间的数字
for i in range(2,num): # 根据因子迭代
if num%i == 0: # 确定第一个因子
j=num/i # 计算第二个因子
print '%d 等于 %d * %d' % (num,i,j)
break # 跳出当前循环
else: # 循环的 else 部分
print num, '是一个质数'
注意这里的else是和break搭配使用的,对于一个for(这里是里面的那个),只会触发一个.由于break一般是配合if使用,所以这里也可以看作是那个if的else,这个结论大致正确,更详尽的研究参见python中else的研究
函数
def
return
关键字参数
使用关键字参数时参数顺序可以任意
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#可写函数说明
def printinfo( name, age ):
"打印任何传入的字符串"
print "Name: ", name
print "Age ", age
return
#调用printinfo函数
printinfo( age=50, name="miki" )
默认参数
不定长参数
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return
# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )
匿名函数
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )
全局变量和局部变量
#!/usr/bin/python
# -*- coding: UTF-8 -*-
total = 0 # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):
#返回2个参数的和."
total = arg1 + arg2 # total在这里是局部变量.
print "函数内是局部变量 : ", total
return total
#调用sum函数
sum( 10, 20 )
print "函数外是全局变量 : ", total
调用结果如下
函数内是局部变量 : 30
函数外是全局变量 : 0
注意全局变量并未改变
如果想使用全局变量需要使用globe来声明
total = 0 # 这是一个全局变量
# 可写函数说明
def sum(arg1, arg2):
global total
print(total)
total = 3
return total
# 调用sum函数
sum(10, 20)
print("函数外是全局变量 : ", total)
注意变量要先声明后使用,这意味着上面的语句中globe不能在print语句下面,并且global total=3是不合法的
异常
捕获异常
大致格式如下
try:
<语句> #运行别的代码
except <名字>:
<语句> #如果在try部份引发了'name'异常
except <名字>,<数据>:
<语句> #如果引发了'name'异常,获得附加的数据
else:
<语句>
当然,也支持finally
try:
<语句>
finally:
<语句> #退出try时总会执行
抛出异常
raise [Exception [, args [, traceback]]]
定义异常
异常应该是典型的继承自Exception类,通过直接或间接的方式。以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。
class Networkerror(RuntimeError):
def __init__(self, arg):
self.args = arg
在你定义以上类后,你可以触发该异常,如下所示:
try:
raise Networkerror("Bad hostname")
except Networkerror,e:
print e.args