函式 基本形式:
def greet():
print("hello")
greet()
#輸出結果:hello
傳遞引數:
def greet(name):
print("hello " + name)
greet("xiao ming")
#輸出結果:hello xiao ming
形參與實參:
形參是函式引數列表中宣告的引數
實參是實際傳遞的引數
位置實參
按位置傳遞引數:
def greet(name, msg):
print(name + " says " + msg)
greet("xiao ming", "hello python")
#輸出結果:xiao ming says hello python
關鍵字實參:
def greet(name, msg):
print(name + " says " + msg)
greet(name="xiao ming", msg="hello python")
#輸出結果:xiao ming says hello python
預設值預設值必須放在引數列表中的最後
def greet(msg, name="xiao ming"):
print(name + " says " + msg)
greet("hello python")
返回值def greetwords(msg, name="xiao ming"):
return name + " says " + msg
print(greetwords("hello"))
#輸出結果:xiao ming says hello
返回字典
def debuginfo():
return
print(debuginfo())
#輸出結果:
傳遞列表
在函式中可以修改列表的值:
def modify(names):
names[0] = 'xiao ming'
names = ['lily', 'mick']
modify(names)
print(names)
#輸出結果:['xiao ming', 'mick']
禁止修改列表:
def modify(names):
names[0] = 'xiao ming'
names = ['lily', 'mick']
modify(names[:])
print(names)
#輸出結果:['lily', 'mick']
變參函式
def output(*names):
print(names)
for name in names:
print(name)
output('lily', 'mick')
使用任意數量的實參
def print_debuginfo(**debug_info):
for key,value in debug_info.items():
print(key + ":" + value)
print_debuginfo(level='debug', msg='file not found')
#輸出結果:
level:debug
msg:file not found
將函式儲存在模組中
匯入整個模組
檔名即為模組
import module_name
使用時用點訪問函式名字
module_name.function_name
匯入特定函式
單個函式
from module_name import function_name
多個函式用逗號隔開
from module_name import function_0, function_1, function_2
as給函式指定別名
from module_name import function_name as other_function_name
匯入模組中所有函式
from module import *
直接使用函式,無需指定模組名字
類 class dog():
# 構造方法
def __init__(self, name, age):
self.name = name
self.age = age
def sit(self):
print(self.name.title() + " is now sitting.")
def roll_over(self):
print(self.name.title() + " rolled over!")
建立例項
my_dog = dog('willie', 6)
訪問屬性
print("my dog's name is " + my_dog.name.title() + ".")
呼叫方法
my_dog.sit()
繼承class flydog(dog): #括號中指定基類
def __init__(self, name, age, mile):
super().__init__(name, age) # 用super()指定基類
self.mile = mile
# 重寫父類方法
def sit(self):
print(self.name.title() + " is now sitting in the air")
my_dog = flydog('willie', 6, 10)
my_dog.sit()
匯入類匯入單個類
建立乙個包含car類的模組,命名為car.py,另乙個包匯入它:
from car import car
匯入多個類
from module import class1 class2
匯入整個模組
import car
使用時需要指定car
car.classname
匯入所有類
from module_name import *
使用時無需指定模組名
檔案和異常 讀檔案
讀取整個檔案:
with open('hello.py') as file_object:
contents = file_object.read()
print(contents)
關鍵字with在不需要訪問檔案後將其關閉。
逐行讀取
with open('hello.py') as file_object:
for line in file_object:
print(line)
讀取到列表
with open('hello.py') as file_object:
lines = file_object.readlines()
for line in lines:
print(line)
寫檔案with open('hello.txt', 'w') as file_object:
file_object.write('hello python')
附加到檔案
with open('hello.txt', 'a') as file_object:
file_object.write('hello go')
異常try:
print(1/0)
except zerodivisionerror:
print("you can't divide by zero!")
使用else
try:
print(3/2)
except zerodivisionerror:
print("you can't divide by zero!")
else:
print('ok')
使用pass
try:
print(3/2)
except zerodivisionerror:
pass
else:
print('ok')
處理json import json
data =
file_name = 'test.jon'
with open(file_name, 'w') as f_obj:
json.dump(data, f_obj)
with open(file_name) as f_obj:
data = json.load(f_obj)
print(data)
python基礎知識(四)
關於編碼的問題 in python3中 對於英文 數字 utf8 1個bytes 位元組 對於乙個字元 對於中文 unicode 3個bytes 位元組 對應乙個字元 encode 編碼 將unicode形式轉化為utf 8等其他形式 decode 解碼 將utf 8等其他形式轉化為unicode形...
python基礎知識 四 函式
def 函式名 pass 區域性變數和全域性變數 var 1 def fun print var var 200 print fun 函式fun 中給var賦值,說明var已經不是全域性變數了,所以在賦值之前想輸出var是錯誤的。globals是宣告全域性變數,globals 是輸出全域性變數 re...
Python基礎知識學習(四)
1 遍歷列表 list1 今天 天氣很好 123 456 abc xyz for x in list1 print x 輸出結果 今天 天氣很好 123 456 abc xyz 接下來,我們進一步遍歷 注意 這種方法只能適用於 元素的格式和數量都相同時 以這段 為例,上次遍歷之後格式都為 x,y 所...