python中的变量
1.python的变量不需要定义,在使用时可以直接使用,还有重新使用使用用以存储不同类型的值。
2.变量命名遵循C命名风格。
3.大小写敏感
4.变量引用计数。
5.del语句可以直接释放资源,变量名删除,引用计数减1
6.变量内存自动管理回收,垃圾收集。
7.指定编码在文件开头中加入#--coding:UTF-8--或者#coding=utf-8
python2.7 测试如下:
>>> a = 12 #无需定义,直接使用,python解释器根据右值决定左侧类型
>>> print a12
>>> id(a) #变量a在内存中的编号
31951520L
>>> type(a) #a的类型为int类型
<type 'int'>
>>> b = 12.34
>>> print b
12.34
>>> id(b) #变量b在内存中所占内存编号
46195712L
>>> print b
12.34
>>> type(b)
<type 'float'> #b的类型为float
>>> a = "xiaozhihui" #变量a重新指向一个字符串
>>> print a
xiaozhihui
>>> id(a) #变量a在内存中的编号为保存“xiaozhihui”地方,原来a所指向的内存编号里内容并没有立即释放
46189616L
>>> type(a) #变量a现在指向一个字符串
<type 'str'>
>>> b=12 #b也赋值为12
>>> id(b)
31951520L #内存中为12 的地址内存并没有立即释放,python实现优化减少malloc和 free的次数
>>> del b #删除b (引用计数减1)
>>> e =12 #e赋值为12
>>> id(e)
31951520L #b和e的地址一样,并没有立即释放,解释器内存回收机制(采用引用计数,类似于java垃圾回收)
>>>
python中的简单函数
函数定义格式
>>> def add(x,y):
s = x + y
return s
>>> res = add(2,4)
>>> print res
6
>>>
1.def定义函数的关键字
2.x和y为形参,不需要类型修饰
3.函数定义需跟":"
4.函数体整体缩进
5.函数可以拥有返回值,若无返回值,返回 None,相当于C中的NULL
局部变量和全局变量
1局部变量作用域覆盖全局变量
>>> def print_num():
num = 5
print num
>>> num = 8
>>> print_num()
5
>>> print num
8
2函数内有局部变量定义,解释器不使用全局变量,局部变量的定义晚于被引用,报错
>>> def print_n():
print num
num = 3
print num
>>> num = 9
>>> print_n #函数在内存中地址
<function print_n at 0x0000000002BFEE48>
>>> print_n()
#报错
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
print_n()
File "<pyshell#42>", line 2, in print_n
print num
UnboundLocalError: local variable 'num' referenced before assignment
print num
num = 3
print num
>>> num = 9
>>> print_n #函数在内存中地址
<function print_n at 0x0000000002BFEE48>
>>> print_n()
#报错
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
print_n()
File "<pyshell#42>", line 2, in print_n
print num
UnboundLocalError: local variable 'num' referenced before assignment
3函数内部可以直接访问全局变量
def print_num():
print num
num = 3
print_num()
print num
num = 3
print_num()
4函数内修改全局变量,使用global关键字
def print_num():
global num
print num
num = 20
print num
num=10
print_num()
print num
10
20
20
特殊变量
__xxx from moudle import '''无法导入
__xxx__ 系统定义的变量
__xxx 类的本地变量
算术表达式
+a
结果符号不变
-a
对结果符号取负
a + b
a加b
a**b
a的b次幂
a * b
a乘以b
a/b
a除以b,真正除,浮点数保留小数
a//b
a除以b,向下取整
a%b
a对b取余数
逻辑表达式
not a
a的逻辑非
a and b
a和b逻辑与
a or b
a和b逻辑或
a is b
a和b是同一个对象
a is not b
a和b不是同一个对象
控制语句
python里的控制语句和循环语句和C中的非常相似,python是用C实现的。注意语句后的":"不要丢掉。
while 判断语句:
执行语句
python输入输出函数
name = raw_input("please input your name")
for循环可以遍历任何序列的项目,如一个列表或者一个字符串
for iterating_var in sequence:
执行语句
>>> for letter in "hello":
print letter
print letter
h
e
l
l
o
在python中,for...else表示这样的意思,for中的语句和普通的没有区别,else中的语句会在循环正常执行完(即for不是通过break跳出而中断的)情况下执行,while...else也是一样
count=0
while count < 5:
print(count,"is less than 5")
count = count + 1
else:
print(count ,"is bigger than 5")
while count < 5:
print(count,"is less than 5")
count = count + 1
else:
print(count ,"is bigger than 5")
输出:
(0, 'is less than 5')
(1, 'is less than 5')
(2, 'is less than 5')
(3, 'is less than 5')
(4, 'is less than 5')
(5, 'is bigger than 5')
(1, 'is less than 5')
(2, 'is less than 5')
(3, 'is less than 5')
(4, 'is less than 5')
(5, 'is bigger than 5')
count=0
while count < 5:
print(count,"is less than 5")
count = count + 1
if count == 3:
break
else:
print(count ,"is bigger than 5")
while count < 5:
print(count,"is less than 5")
count = count + 1
if count == 3:
break
else:
print(count ,"is bigger than 5")
输出:
(0, 'is less than 5')
(1, 'is less than 5')
(2, 'is less than 5')
(1, 'is less than 5')
(2, 'is less than 5')
list列表
序列都可以进行的操作包括索引,切片,加,乘,检查成员。序列中的每个元素都分配一个数字,他的位置,或索引,第一个索引是0,第二个索引是1,依次类推。
列表和元组二者均能保存在任意类型的python对象,索引访问元素从开始列表元素用[]包括,元素个数值都可以改变元组元素用()包括,通过切片[][:]得到子集,此操作同于字符串相关操作,切片使用的基本样式[下限:上限:步长]
访问列表中的值
>>> alist = [1,2,3,4,5,6,7,8,9]
>>> alist[0]
1
1
>>> alist[:4]
[1, 2, 3, 4]
[1, 2, 3, 4]
>>> alist[2:8:2]
#范围值
[3, 5, 7]
[3, 5, 7]
>>> alist[3]=50
#修改值
>>> alist
[1, 2, 3, 50, 5, 6, 7, 8, 9]
>>> alist
[1, 2, 3, 50, 5, 6, 7, 8, 9]
>>> del alist[2]
#删除值
>>> alist
[1, 2, 50, 5, 6, 7, 8, 9]
>>> alist
[1, 2, 50, 5, 6, 7, 8, 9]
TAB键输入提示
>>> alist.append(5)
>>> alist
[1, 2, 50, 5, 6, 7, 8, 9, 5]
>>> alist
[1, 2, 50, 5, 6, 7, 8, 9, 5]
>>> alist.append("hello")
>>> alist
[1, 2, 50, 5, 6, 7, 8, 9, 5, 'hello']
>>> alist
[1, 2, 50, 5, 6, 7, 8, 9, 5, 'hello']
列表长度
>>> len(alist)
10
10
>>> alist + [88,99]
[1, 2, 50, 5, 6, 7, 8, 9, 5, 'hello', 88, 99]
[1, 2, 50, 5, 6, 7, 8, 9, 5, 'hello', 88, 99]
>>> alist * 2
[1, 2, 50, 5, 6, 7, 8, 9, 5, 'hello', 1, 2, 50, 5, 6, 7, 8, 9, 5, 'hello']
[1, 2, 50, 5, 6, 7, 8, 9, 5, 'hello', 1, 2, 50, 5, 6, 7, 8, 9, 5, 'hello']
>>> 'hello' in alist
True
True
>>> 100 in alist
False
False
Python列表函数&方法
python包含以下函数:
1
cmp(list1,list2)
比较两个列表的元素
2
len(list)
列表元素个数
3
max(list)
返回列表元素最大值
4
min(list)
返回列表元素最小值
5
list(seq)
将元组转换为列表
python包含以下方法
1
list.append(obj)
在列表末尾添加新的对象
2
list.count(obj)
统计某个元素在列表中出现的次数
3
list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4
list.index(obj)
从列表中找出某个第一个匹配的索引位置
5
list.insert(index,obj)
将对象插入列表
6
list.pop(obj=list[-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7
list.remove(obj)
移除列表中某个值的第一个匹配项
8
list.reverse()
反向列表中元素
9
list.sort([fun])
对原列表进行排序
元组Tuple
python的元组与列表类似,不同之处在于元组的元素不能修改。也可以进行分片和连接操作,元组使用小括号,列表使用方括号。
>>> aTuple = ('hello',1.2)
>>> aTuple
>>> aTuple
('hello', 1.2)
>>> aTuple[1]
1.2
1.2
元组内置函数
python元组包含了以下内置函数
序号
序号及描述
1
cmp(tuple1,tuple2)
比较两个元组元素
2
len(tuple)
计算元组元素个数
3
max(tuple)
返回元组中元素最大值
4
min(tuple)
返回元组中元素最小值
5
tuple(seq)
将列表转换为元组
多维元组
>>> demotuple=[(1,2),(3,4)]
>>> demotuple[0]
(1, 2)
>>> demotuple[0][0]
1
>>> demotuple[0]
(1, 2)
>>> demotuple[0][0]
1
字典DIctionary
字典是python中的映射数据类型,由键值(key-value)构成,类似于关联数组或哈希表,key一般以数字和字符串居多,值可以是任意的python的类型对象,如其他容器对象。字典元素用大括号{}
>>> dict={1:"hello",2:"word",3:"!"}
>>> dict
{1: 'hello', 2: 'word', 3: '!'}
>>> dict
{1: 'hello', 2: 'word', 3: '!'}
每个键与值用冒号隔开(:),每对用 逗号分隔,整体放在花括号中({})。键key必须独一无二,但值则不必。值value可以取任何数据类型,但必须是不可变的
访问字典里的值
>>> dict[1]
'hello'
>>> dict[2]
'word
'hello'
>>> dict[2]
'word
字典键(key)的特性
字典值可以没有限制取任何python对象,即可以是标准的对象,也可以是用户点定义的,但键不行。
两个重要的点需要记住:
1不允许同一个键出现两次,创建时如果同一个键被赋值两次,后一个值会被记住。
>>> dict={"name":"xiaozhihui","age":24,"name":"zhangwei"}
>>> dict
{'age': 24, 'name': 'zhangwei'}
>>> dict
{'age': 24, 'name': 'zhangwei'}
2键必须不可变,所以可以用数,字符串或元组充当,所以用列表就不行。
字典内置函数和方法
python字典包含了以下内置函数
1
cmp(dict1,dict2)
比较两个字典元素
2
len(dict)
计算字典元素个数,即键的总数
3
str(dict)
输出字典可打印的字符串表示
4
type(variable)
返回输入变量的类型,如果变量是字典就返回字典类型
python字典包含了以下内置函数:
1
radiansdict.clear()
删除字典内所有元素
2
radiansdict.copy()
返回一个字典的浅复制
3
radiansdict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4
radiansdict.get(key,default=Nono)
返回指定键的值,如果不存在字典中返回defalut的值
5
radiansdict.has_key(key)
如果键在字典dict里返回true,否则返回false
6
radiansdict.items()
以列表返回可遍历的(键,值)元组数组
7
radiansdict.keys()
以列表返回一个字典所有的键
8
radiansdict.setdefault(key,defalut=Nono)
和get()类似,但如果键不存在与字典中,将会添加键并将值设为default
9
radiansdict.update(dict2)
把字典dict2的键、值对更新到dict里
10
radiansdict.values()
以列表返回字典中的所有值