7.千鋒教育装飾器&偏関数と作用域と異常処理と書類読み書き---自作随堂ノート
28751 ワード
デコレーション
概念:1つの閉パッケージで、1つの関数をパラメータとして、1つの代替版の関数を返して、本質的に1つの戻り関数の関数です
シンプルなアクセサリー
複雑な装飾器
ユニバーサルデコレーション
バイアス関数
≪スコープ|Operating Domain|oem_src≫:変数が使用できる範囲
プログラムの変数はすべての場所で使用できるわけではありません.アクセス権は変数がどこで付与されるかによって決まります.
役割ドメイン:
#ローカル役割ドメイン#グローバル役割ドメイン#内蔵役割ドメインint 3(「111」)
例外処理
try······except······else
フォーマット:try:文t exceptエラーコードas e:文1 exceptエラーコードas e:文2・・exceptエラーコードas e:文n else:文e注意:else文有無
役割:try文ブロックのエラーを検出し、except文に情報をキャプチャして処理する
論理:プログラムがtry-except-else文に実行されたとき1、try」文t「実行中にエラーが発生した場合、最初のエラーコードに一致し、一致上であれば対応する「文」2を実行し、try「文t」が実行中にエラーが発生した場合、一致する異常がなければ、エラーは前のレベルのtry文にコミットされます.または3、tryの「文」にエラーが発生していない場合は、elseの下の「文e」を実行します(必要です).
特殊
1、エラーは実はclass(クラス)で、すべてのエラーはBaseExceptionから継承されているので、キャプチャ時にこのタイプのエラーをキャプチャし、サブクラスを一網打尽にします
2、多層呼び出しにまたがる:mainがfunc 2を呼び出し、func 2がfunc 1を呼び出し、func 1にエラーが発生した場合、mainがキャプチャされていれば処理できる
try・・・except・・・finally形式:try:文t exceptエラーコードas e:文1 exceptエラーコードas e:文2・・・exceptエラーコードas e:文n finally:文f
役割:文tは、エラーの有無にかかわらず最後の文fを実行する
断言する
ファイル処理
一、ファイルを読む
プロセス:1、ファイルを開く2、ファイルの内容を読む3、ファイルを閉じる
ファイルを開く
open(path, flag[, encoding][, errors])
path:ファイルを開くパスflag:開く方法rは読み取り専用でファイルを開き、ファイルの記述子はファイルの先頭rbに置いてバイナリ形式で1つのファイルを読み取り専用に開き、ファイルの記述子はファイルの先頭r+で1つのファイルを開いて読み書きに使用し、ファイルの記述子はファイルの先頭wで1つのファイルを開いて書き込みに使用します.ファイルが既に存在する場合は上書きし、存在しない場合は新規ファイルwbを作成してバイナリのみを書き込むためのファイルを開き、存在しない場合は上書きし、存在しない場合は新規ファイルw+を作成して読み書きのためのファイルを開き、存在する場合は上書きし、存在しない場合は新規ファイルaを作成して追加のためのファイルを開く.ファイルが存在する場合、ファイル記述子はファイルの末尾a+に配置され、読み書きのためにファイルが開き、ファイルが存在する場合、ファイル記述子はファイルの末尾に配置されます.
encoding:符号化方式errors:エラー処理
完全なプロセス
二、書類を書く
三、符号化と復号
四、list/tuple/dict/setのファイル操作
概念:1つの閉パッケージで、1つの関数をパラメータとして、1つの代替版の関数を返して、本質的に1つの戻り関数の関数です
シンプルなアクセサリー
def func1():
print("sunck is a good man!")
def outer(func):
def inner():
print("**************")
func()
return inner
# f func1
f = outer(func1)
f()
複雑な装飾器
def outer(func):
def inner(age):
if age < 0:
age = 0
func(age)
return inner
# @
# @python2.4 @
@outer # say = outer(say)
def say(age):
print("sunck is %d years old" % (age))
say(-10)
ユニバーサルデコレーション
def outer(func):
def inner(*args, **kwargs):
#
print("&&&&&&&&&&&")
func(*args, **kwargs)
return inner
@outer
def say(name, age): # , 6-7
print("my name is %s,I am %d years old" % (name, age))
say("sunck", 18)
バイアス関数
import functools
#
print(int("1010", base = 2))
#
def int2(str, base = 2):
return int(str, base)
print(int2("1011"))
# ,
int3 = functools.partial(int, base = 2)
print()
≪スコープ|Operating Domain|oem_src≫:変数が使用できる範囲
プログラムの変数はすべての場所で使用できるわけではありません.アクセス権は変数がどこで付与されるかによって決まります.
役割ドメイン:
#ローカル役割ドメイン#グローバル役割ドメイン#内蔵役割ドメインint 3(「111」)
例外処理
try······except······else
フォーマット:try:文t exceptエラーコードas e:文1 exceptエラーコードas e:文2・・exceptエラーコードas e:文n else:文e注意:else文有無
役割:try文ブロックのエラーを検出し、except文に情報をキャプチャして処理する
論理:プログラムがtry-except-else文に実行されたとき1、try」文t「実行中にエラーが発生した場合、最初のエラーコードに一致し、一致上であれば対応する「文」2を実行し、try「文t」が実行中にエラーが発生した場合、一致する異常がなければ、エラーは前のレベルのtry文にコミットされます.または3、tryの「文」にエラーが発生していない場合は、elseの下の「文e」を実行します(必要です).
# print(3 / 0)
# : ,
try:
print(3 / 0)
except ZeroDivisionError as e:
print(" 0")
except NameError as e:
print(" ")
else:
print(" ")
print("****************")
# except
try:
#print(4 / 0)
print(num)
except:
print(" ")
# except
try:
print(5 / 0)
except (NameError, ZeroDivisionError):
print(" NameError ZeroDivisionError")
特殊
1、エラーは実はclass(クラス)で、すべてのエラーはBaseExceptionから継承されているので、キャプチャ時にこのタイプのエラーをキャプチャし、サブクラスを一網打尽にします
try:
print(5 / 0)
except BaseException as e:
print(" 1")
except ZeroDivisionError as e:
print(" 2")
2、多層呼び出しにまたがる:mainがfunc 2を呼び出し、func 2がfunc 1を呼び出し、func 1にエラーが発生した場合、mainがキャプチャされていれば処理できる
def func1(num):
print(1 / num)
def func2(num):
func1(num)
def main():
func2(0)
try:
main()
except ZeroDivisionError as e:
print("%%%")
try・・・except・・・finally形式:try:文t exceptエラーコードas e:文1 exceptエラーコードas e:文2・・・exceptエラーコードas e:文n finally:文f
役割:文tは、エラーの有無にかかわらず最後の文fを実行する
try:
print(1/0)
except ZeroDivisionError as e:
print(" 0 ")
finally:
print(" ")
print("asajhs")
断言する
def func(num, div):
assert (div != 0), "div 0"
return num / div
print(func(10, 2))
ファイル処理
一、ファイルを読む
プロセス:1、ファイルを開く2、ファイルの内容を読む3、ファイルを閉じる
ファイルを開く
open(path, flag[, encoding][, errors])
path:ファイルを開くパスflag:開く方法rは読み取り専用でファイルを開き、ファイルの記述子はファイルの先頭rbに置いてバイナリ形式で1つのファイルを読み取り専用に開き、ファイルの記述子はファイルの先頭r+で1つのファイルを開いて読み書きに使用し、ファイルの記述子はファイルの先頭wで1つのファイルを開いて書き込みに使用します.ファイルが既に存在する場合は上書きし、存在しない場合は新規ファイルwbを作成してバイナリのみを書き込むためのファイルを開き、存在しない場合は上書きし、存在しない場合は新規ファイルw+を作成して読み書きのためのファイルを開き、存在する場合は上書きし、存在しない場合は新規ファイルaを作成して追加のためのファイルを開く.ファイルが存在する場合、ファイル記述子はファイルの末尾a+に配置され、読み書きのためにファイルが開き、ファイルが存在する場合、ファイル記述子はファイルの末尾に配置されます.
encoding:符号化方式errors:エラー処理
# 、
path = r"D:\python \ 400 python sublime\first.py"
# ignore
# f = open(path, "r", encoding = "utf-8", errors = "ignore")
f = open(path, "r")
# 、
# 1、3、5
# 1、
str1 = f.read()
print(str1)
# 2、
str2 = f.read(10)
print("*" + str2 + "*")
str3 = f.read(10)
print("*" + str3 + "*")
# 3、 , “
”
str4 = f.readline()
print(str4)
str5 = f.readline()
print(str5)
# 4、
str6 = f.readline(10)
print(str6)
# 5、
list7 = f.readlines()
print(list7)
# 6、 0, size
list8 = f.readlines(22)
print(list8)
#
print("***********")
f.seek(10)
str9 = f.read()
print(str9)
、
f.close()
完全なプロセス
try:
f1 = open(path, "r", encoding = "utf-8")
print(f1.read())
except:
if f1:
f1.close()
# .py
with open(path, "r", encoding = "utf-8") as f2:
print(f2.read())
二、書類を書く
path = r"D:\python \ 400 python sublime\first.py"
f = open(path, "a")
#
# 1、
f.write("sunck is a good man")
# 2、
# ,
#
f.flush()
f.close()
#
with open(path, "a") as f2:
f2.write("goodman")
三、符号化と復号
path = r"D:\python \ 400 python sublime\file1.txt"
with open(path, "wb") as f1:
str = "sunck is a good man "
f1.write(str.encode("utf-8"))
#
with open(path, "rb") as f2:
data = f2.read()
print(data)
print(type(data))
newData = data.decode("utf-8")
print(newData)
print(type(newData))
四、list/tuple/dict/setのファイル操作
import pickle #
myList = [1,2,3,4,5,"sunck is a good man!"]
path = r"D:\python \ 400 python sublime\file6.txt"
f = open(path, "wb")
pickle.dump(myList, f)
f.close()
#
f1 = open(path, "rb")
tempList = pickle.load(f1)
print(tempList)
f1.close