一.模塊
Python本身就內置了很多非常有用的模塊,只要安裝完畢,這些模塊就可以立刻使用。
__name__屬性
__name__屬性可以做到,測試模塊的代碼只在測試情況下被運行,而在被導入時不會執行
__name__是python的一個內置屬性,記錄着一個字符串
如果是被其他文件導入時,__name__就是模塊名
如果是當前執行的程序,__name__就是__main__
# 全局變量,函數,類 直接執行的代碼不是向外界提供的工具
def say_hello():
print 'hello hello'
#print 'have a nice day!'
# 如果直接在模塊中輸入,得到的是__main__
if __name__ == '__main__':
print __name__
# 文件被導入的時候,能夠直接被執行的代碼不需要被執行
print 'lily 開發的程序'
say_hello()
# 在導入模塊時,每個導入應獨佔一行
import test1
import test2
test1.say_hello()
test2.say_hello()
dog = test2.Dog()
print dog
cat = test1.Cat()
print cat
# 使用as指定模塊的別名(大駝峯命名法)
import test1 as CatModule
import test2 as DogModule
DogModule.say_hello()
CatModule.say_hello()
dog = DogModule.Dog()
print dog
cat = CatModule.Cat()
print cat
示例導入模塊
from test1 import Cat
from test2 import say_hello
from test1 import say_hello as test1_say_hello
say_hello()
test1_say_hello()
miaomiao = Cat()
**python的解釋器在導入模塊的時候,會:
1.搜索當前目錄指定的模塊文件,如果有就直接導入
2.如果沒有,再搜索系統目錄
注意:在開發時,給文件起名,不要和系統模塊文件重名**
示例二
import random
rand = random.randint(0,10)
print rand
在很多python文件中會看到以下格式的代碼
# 導入模塊
# 定義全部變量
# 定義類
# 定義函數
#在代碼的下方
def main():
pass
if __name__ == '__main__'
main() 在導入的.py文件中,輸出是 文件名import test
二.異常
在程序開發中,如果對某些代碼的執行不確定(程序的語法完全正確)
可以增加try來捕獲異常
try:
嘗試執行的代碼
except:
出現錯誤的處理
示例一
try:
num = int(raw_input('請輸入一個整數:'))
except:
print '請輸入正確的整數'
# 無論是否輸入錯誤額,程序都會正常得執行
print '*' * 50
當python解釋器拋出異常時,最後一行錯誤信息的第一個單詞,就是錯誤類型
# 1.提示用戶輸入一個整數
# 2.使用8除以用戶輸入的整數並且輸出
try:
num = int(raw_input('請輸入一個整數:'))
result = 8 / num
print result
except ZeroDivisionError:
print '除0錯誤 0不能做除數'
except ValueError:
print '請輸入正確的整數'
# 1.輸入的不是數字
# 2.0不能做除數
捕獲未知錯誤:
在開發的時候,要判斷所有可能出現的錯誤,是有一定難度的
如果希望程序無論出現任何錯誤,都不會因python解釋器拋出異常而終止
可以再增加一個except
try:
num = int(raw_input('請輸入一個整數:'))
result = 8 / num
print result
#except ZeroDivisionError:
# print '除0錯誤 0不能做除數'
except ValueError:
print '請輸入正確的整數'
# 捕獲未知異常
# result:一個變量名,可以隨便起名
except Exception as result:
print '未知錯誤額 %s' % result
try:
嘗試執行的代碼
pass
except 錯誤類型1:
pass
except 錯誤類型2:
pass
except Exception as result:
else:
沒有異常纔會執行的代碼
pass
finally:
無論是否有異常,都會執行的代碼
pass
try:
num = int(raw_input('請輸入一個整數:'))
result = 8 / num
print result
#except ZeroDivisionError:
# print '除0錯誤 0不能做除數'
except ValueError:
print '請輸入正確的整數'
# 捕獲未知異常
# result:一個變量名,可以隨便起名
except Exception as result:
print '未知錯誤額 %s' % result
# 只有在沒有以異常的時候,纔會執行的代碼
else:
print '嘗試成功!'
# 無論是否有異常,都會執行的代碼
finally:
print '*************'
異常的傳遞
異常的傳遞–當函數/方法執行出現異常,會將異常傳遞給函數/方法調用的一方
如果傳遞到主程序,依舊沒有異常處理,程序纔會終止,可以在主程序中增加
異常捕獲,而在主函數中調用其他函數,只要出現異常,都會傳遞到主函數的異常
捕獲中,這就不需要在代碼中,增加大量的異常捕獲,能夠保證代碼的整潔
"""
def demo1():
return int(raw_input('請輸入整數:'))
def demo2():
return demo1()
# 利用異常的傳遞性,在主程序中捕獲異常
try:
print demo2()
except Exception as result:
print '未知錯誤 %s' % result
示例二
def input_passwd():
# 1.提示用戶輸入密碼
pwd = raw_input('請輸入密碼')
# 2.判斷密碼的長度 >-=8,就返回用戶輸入的密碼
if len(pwd) >= 8:
return pwd
# 3.<8,主動拋出異常
# print '主動拋出異常'
# 1.創建異常對象(可以添加錯誤信息)
ex = Exception('密碼長度不夠')
raise ex
# 注意:只拋出異常而不捕獲異常,代碼會錯出
try:
print input_passwd()
except Exception as result:
print result
# 先創建異常對象,再拋出異常,再在主函數中捕獲異常
三.斷言
斷言:可以理解爲提前預言,讓人更好的知道錯誤原因
"""
def func(num,div):
assert (div != 0),'div不能爲0'
return num / div
print func(10,0)
四.數據儲存 –json
很多程序都要求用戶輸入某種信息,
程序都把用戶提供的信息存儲在列表和字典等數據結構中,
用戶關閉程序時,你幾乎總是要保存他們的信息:
一種簡單的方式是使用模塊json來存儲數據
(在python中使用json的時候,主要也就是使用json模塊,json是以一種良好的格式來進行數據的交互)
模塊json讓你能夠將簡單的Python數據結構轉存到文件中,
並在程序再次運行時加載該文件中的數據,
你還可以使用json在Python程序之間分享數據,
更重要的是,json數據格式並非Python專用的,
這讓你能夠將以json格式存儲的數據與使用其他編程語言的人分享
注意:json(javascriptObject notation)格式最初是爲javascript開發的,但隨後成了一種常見格式,
被包括python在內的衆在這裏
**
這裏會用到兩個.json文件 這兩個文件名一個是numbers.json username.json
**
import json
number = [1,2,3,4]
with open('numbers.json','w') as f_obj:
# 我們使用函數json.dump()將數字列表存儲到文件中
json.dump(number,f_obj)
import json
filename = 'numbers.json'
with open(filename) as f_obj:
# 我們使用函數json.load加載存儲在numbers.json中的信息
# 並將其存儲到變量numbers中
numbers = json.load(f_obj)
print numbers
import json
username = raw_input('what is your name ?')
filename = 'username.json'
with open(filename,'a') as f_obj:
json.dump(username,f_obj)
print 'We will rember you when you come back, %s' % username
import json
filename = "username.json"
with open(filename) as f_obj:
username = json.load(f_obj)
print "Welcome back, %s" % username
如果以前存儲了用戶,就顯示
否則,就提示用戶輸入用戶名並存儲它
"""
import json
filename = "username.json"
try:
with open(filename) as f_obj:
username = json.load(f_obj)
except ValueError:
username = raw_input("What is you name? ")
with open(filename,"w") as f_obj:
json.dump(username,f_obj)
print "We'll remember you when you come back %s" % username
#依賴於try代碼塊成功執行的代碼都應放到else代碼塊中:
else:
print "Welcome back %s " % username