一、print 和 import
1、同时打印多个表达式
>>>print 'age:',23 #中间用逗号隔开
>>>age:23
2、
>>>name = "xujie"
>>>age = "23"
>>>print name,age # 中间用逗号隔开
>>>xujie23
3、从模块导入函数
方式一:import somemodule
方式二:from somemodule import somefunction (as name) #括号中是为函数名起别名,避免
相同函数名冲突
方式三:from somemodule import somefunction1,somefunction2,somefunction3
方式四:from somemodule import *
当函数名称相同时:
module1.open()
module2.open()
二、另一种赋值方式
注意:左右数量必须保持一致,否则报错
1、序列解包赋值
同时为多个值赋值
>>>x,y,z = 1,2,3
>>>print x,y,z
>>>1 2 3
序列解包
>>>value=(1,2,3)
>>>x,y,z = value
>>>x
>>>1
另一种情况1:
>>>dict= {'name':'xujie',‘age’:24}
>>>key,value = dict.popitem()
>>>key
>>>age
>>>value
>>>24
另一种情况2:
a,b,rest*=[1,2,3,4]
rest的结果是[3,4]
2、链式赋值
x = y = somefunction();
3、增量赋值
也适用于字符串
>>>x=2
>>>x += 1
>>>x
>>>6
三、语句块:缩进相同4个空格的语句,为一个语句块
冒号(:)用来标识语句块的开始,块中的每一个语句都是缩进的(缩进量相同)
四、条件和条件语句
1、布尔值:
False None 0 "" () [] {} 均表示false
其他的一切均表示 真值
所有的值都可以用作布尔值,不需要对他们进行转换
2、条件执行和if语句
>>>name = raw_input('what your name?')
>>>if name.endwith('xujie'):
>>> print 'hello xujie'
3、else子句
>>>name = raw_input('what your name?')
>>>if name.endwith('xujie'):
>>> print 'hello xujie'
>>>else:
>>> print 'hello stranger'
4、elif子句
>>>age = raw_input('how old are you?')
>>> if age > 0:
>>> pirnt 'age>0'
>>> elif age < 0:
>>> print 'age<0'
>>> else:
>>> print 'age = 0'
5、嵌套代码块
代码快中又有代码块
6、复杂一点的条件
1、比较运算符
x==y x等于y
x is y x和y是同一个对象
x is not y x和y不是同一个对象
x in y x是y容器的成员
x not in y x不是y容器的成员
x<>y 表示x和y不相等
2、相等运算符:==
3、is: 同一性判断
is 和 == 的区别 is判定的是同一性,而不是相等性,比较的是对象 ==更多的是表示一个数
4、in 成员资格预算福
name = raw_input('what is your name?')
if 's' in name:
print 'in'
else:
print 'not in'
5、字符串和序列比较
1、字符串的比较
>>>alpha"<"beta"
>>>True
解释:左右两个字符串的0角标开始比较,形同则往后延续进行比较,直到遇到不同时候,比较的原则是按照ASCII的顺序来的。
2、序列的比较
>>>[1,2] < [2,1]
True
比较原则同上,从0角标位置一个元素一个元素的比较
6、布尔运算符(and,or,not)
例子:
python支持这种条件比较:
if number <= 10 and number >=1:
print ...
另外python的布尔运算符中,本身具有逻辑短路的特性,同java的 && 和 ||
扩展:
a if b else c
如果b为真,返回a 否则返回c
7、断言
关键词用:assert,具有if的大概意思 ,满足 xxx条件,则...
不同于if的是 assert 是只有确保后面的条件成立的时候 程序才能正常工作 否则报错
例:
>>>age = 10
>>>assert 0 < age <100 #此处执行没问题
>>>age = -1
>>>assert 0 < age <100 #此处报错
报错
五、循环
1、while
>>>x = 1
>>>whle x <= 100
>>> print x
>>> x += 1
2、for循环 (循环集合时使用)
1、
例:
>>>words = ['this','is',‘a’,'apple']
>>>for word in word:
>>> print word
>>> this is a apple
2、内建函数range()的使用
第一种使用方式,提供范围:
>>>range(0,10) #范围是前闭后开
>>>[0,1,2,3,4,5,6,7,8,9]
第二种使用方式,提供上限:
>>>range(10)
>>>[0,1,2,3,4,5,6,7,8,9] #下限是0,不包括上限
第三种
for number in range(1,101): #会打印1-100的数
print number
扩展:该函数的第三个参数代表遍历时候的步长
3、循环遍历字典元素
d = {'x':1,‘y’:2,'z':3}
for key in d:
print key,'corresponds to',d[key]
应用序列解包
for key,value in d.item(): #用到了序列解包
print key,'corresponds',value
4、一些迭代工具
1、并行迭代
a、
names = ['xiaoming','age']
age = ['16','24']
for i in range(len(names)):
print names[i],"is",ages[1],"years old"
b、使用内建函数zip():
通过zip()进行并行迭代时,如果两个遍历序列不等长,短的遍历结束后,整个循环结束
>>>zip(names,age)
>>>[(‘xiaoming',16),('age',24)]
c、在循环中解包元组
for name,age in zip(names,age): #解包就是左右一对一,’各回各家,各找各妈‘
print name,'is',age,'years old'
2、编号迭代
此处使用python的内建函数 enumerate();
for index,sttring in enumerate(string):
if 'xxx' in string:
string[index] = '[censored]'
3、翻转和排序迭代
即:reversed() 和 sorted() 两个函数
作用于序列或者可迭代对象上,不是原地修改对象,而是返回翻转或者排序后的版本
5、跳出循环
1、break 结束循环 执行循环后面的代码
2、continue 调到下一轮循环的开始,结束本次循环, 当次循环的结束,不是整个循环的结束
6、循环中的else子句
for和else组合
from math import sqrt
for n in range(99,81,-1);
root = sqrt(n)
if root = int(root):
print n
break
else:
print "didn`t find it"
六、列表推导式——轻量级循环
例一:
>>>[x*x for x in range(10)]
[0,1,4,9,16,25,36,49,64,81]
例二:
>>>[x*x for x in range(10) if x % 3 == 0]
>>>[0,9,36,81]
例三:
>>>[(x,y) for x in range(3) for y in range(3)]
>>>[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2).....(2,2)]
例四:
girl = ['alice','bernice','clerice']
boys = ['chris','arnold','bob']
[b+'+'+g for b in boys for g in girls if b[0]==g[0]]
['chris+clarice','arnold+alice','bob+bernice']
七、三人行
1、pass
>>>pass
>>> #什么也没发生 ,直接跳过
应用举例:
写了一个if条件判断,但是if 代码块中的内容还未定,python中空代码块是非法的 此时可以在if 代码块中写一个 pass 程序执行到此 直接跳过
2、使用del()删除
1、python同样存在自动的垃圾回收机制 python解释器会负责内存的回收
2、del()
>>>x=1
>>>x.del() #改函数不仅会删除对象的引用,也会删除那个名字本身
3、exec()和eval()函数
存在问题:这种函数 存在一种安全问题,若执行用户输入的字符串,存在严重安全问题
解决办法:作用域的限定
>>>from math() import sqrt
>>>scop = {}
>>>exec ’sqrt = 1‘ in scope #如果不加作用范围,会覆盖math 中sqrt()函数,下面的代码执行就会报错
>>>sqrt(4)
>>>2 #说明代码没有被破坏 避免了安全问题
>>>scope['sqrt']
>>>1
1、exec():执行一个字符串
>>>exec "print 'hello,world'"
>>>hello world
2、eval():自动计算python字符串中的表达式,并且返回结果值
>>>eval('6+2')
>>>8