python_学习笔记0803

今天是二零一伍年八月三日

1.python的语法中,if语句需要冒号

# if.py

a = 100 
if a >= 100 :
	print 'no less than 100'
else :
	print 'less than 100'</span>
而逻辑中的else if要简写为elif

a = 100 
if a > 100 :
	print 'bigger than 100'
elif a == 100 :
	print 'equal to 100 '
else :
	print 'less than 100'


2.python语法中,for循环十分有趣

# for_circle.py

names = ['strange' , 'huahua' ]
for name in names :
	print name

其全称为for...in循环,依次把list或tuple中的每个元素迭代出来


3.发现在python中不存在c中域的概念

比如在python中

# question_of_circle.py

i = 2  
while i > 0 : 
	n = 99 
	i = i - 1 
	n = n - 1 
print n 
对n的访问在while外也是合法的

但是对于c语言

// queston_of_circle.cpp

#include <iostream>
using namespace std ;
int main (){
	int i = 2 ;
	while(i > 0 ){
		int n = 99 ;
		i -- ;
	}
	cout << n << endl ;
	return 0 ;
}
对n的访问是非法的

值得注意


这里引用一段别人的博客(http://blog.sina.com.cn/s/blog_7e4ac8b501015opb.html)

(1)最内嵌套作用域规则:由一个赋值语句引进的名字在这个赋值语句所在的作用域里是可见(起作用)的,而且在其内部嵌套的每个作用域里也可见,除非它被嵌套于内部的,引进同样名字的另一条赋值语句所遮蔽/覆盖。

(2)LEGB:符号表的搜索顺序是Local -> Enclosing Function -> Global -> Built-in

例如(下面实例会出错):

------------------------------------------

>>> x=10
>>> def f():
 ...   print(x)
 ...   x+=1

 
>>> f()
   Traceback (most recent call last):
   File "<pyshell#93>", line 1, in <module>:     f()
   File "<pyshell#92>", line 2, in f :    print(x)
   UnboundLocalError: local variable 'x' referenced before assignment
>>>

---------------------------------------------

为什么会出错呢?

因为在函数f()中出现了变量x+=1,编译器会认为x属于局部变量(local),根据LEGB规则,先搜索local变量,则在print(x)语句时候,局部变量 x还没有赋值,故出现下面提示信息:

 UnboundLocalError: local variable 'x' referenced before assignment


python能够改变变量作用域的代码段是def、class、lamda.


4.原有的输入函数raw_input()输入的对象都是字符串,使用int()函数就行

birth = int(raw_input('birth: '))
而且int()发现一个字符串并不是合法的数字时就会报错,程序就会退出了。

在python3.x中出现input()函数,可以解决输入类型的问题。


5.python中的dict对象,dict对象类似其他语言中的map,是一种key-value的储存方式

dict的使用语句为

d = {'Michael' : 95 , 'Bob' : 75 , 'Tracy' : 85}

当然,在初始声明后,也可以添加新的key值

d ['Tomas'] = 22

key不存在时,访问key会报错,可以使用in检验key是否存在与dict

>>>'Thomas' in d  # suppse Thomas isn't in d
false
用get()函数也可以查找key是否在dict中,如果key不存在,返回None,或者是函数已指定的值

>>>d.get('Thomas')
>>>d.get('Thomas' , -1 )
-1

在python的交互执行行中,None显示任何结果

想要删除一个key—value搭配时,可以使用pop()函数


dict是用空间来换取时间的一种方法

dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象
这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。
要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值