一段階day 11-01モジュール、反復器、ジェネレータ、ファイル操作

5153 ワード

一、モジュール
1、モジュールとは
Pythonのpyファイルはモジュールです.importまたはfrom-importによって、あるモジュールで別のモジュールの内容を使用することができる.方法:importモジュール名--』はモジュール内のすべての内容をインポートし、現在のモジュールでモジュール内のすべてのグローバル変数を「モジュール名.」で使用することができる.fromモジュール名import変数1,変数2,...」はモジュール内のすべての内容をインポートしますが、importの後ろの変数しか使用できません.fromモジュール名import*--』はモジュール内のすべての内容をインポートし、すべてのグローバル変数を直接使用することができます.コードがimportに実行されると、importの後ろのモジュールの内容が一度実行されます.
test1     :

print(__name__)
test=100
print('         ',test)
def func1():
    print('good morning,everone')

func1()
print(func1())

===============
import     test1
__test1__  #print(__name__)
 #          100   #print('         ',test)
 good morning,everone      #print('good morning,everone')
 good morning,everone      #func1()
 None         #print(func1())
#####      test1           
test1.func1() #good morning,everone
#####        test1.func1    

2、モジュール名の変更
importモジュール名1 asモジュールの新しい名前--』はモジュール名1にモジュールの新しい名前で命名したが、モジュールの新しい名前は現在のモジュールでしか役に立たず、本当に名前を変えなかった.fromモジュール名import変数名1 as変数の新しい名前、変数名2 as変数の新しい名前...--』はモジュールの一部の変数に名前を変更したが、変数の新しい名前は現在のモジュールでしか役に立たず、本当に名前を変更しなかった.
import test1 as jsj
print(jsj.test)    #100
from test1 import func1 as hanshu1
print(hanshu1())   #         test1.func1()

3、import
1つのモジュールは、importを何回実行しても1回だけインポートされます.これにより、インポートモジュールが何度も実行されることを防止することができる.
4、選択的なインポート(インポートを阻止)
if _ _ name_ _ == '_ _ main_ _' : ——》固定書き方は他のモジュールにインポートされて実行されるコードをここに書きたくない(インデント注意)
5、いつモジュールを使うか
同じ機能を持つ関数とデータをカプセル化し、
二、反復器
1、反復器とは
反復器はPythonのコンテナクラスのデータ型です.シーケンスに属し、具体的な字面量はありません(つまり、一つ一つ取り出して見ないと、この反復器にどれだけの要素があるか、要素が何なのかは永遠に分かりません).他のシーケンスを反復器に変換できます.生成構文:iter(シーケンス);
2、反復器の特徴
a、nextメソッドで1つ1つしか取得できない反復器の要素;b、1つの要素を取り出した後、反復器にはこの要素は存在しません.取り出し構文:next(反復器);反復器.next_ _ ()
str1='123456abcde'
iter1=iter(str1)
print(iter1)   #         
print(next(iter1)) #1
print(next(iter1)) #2
print(next(iter1)) #3
print(next(iter1)) #4
print(next(iter1)) #5
print(iter1._ _ next_ _ ()) #6
  :iter        ???

三、生成式と生成器
1、ジェネレータ
ジェネレータは反復器ですが、反復器は必ずしも生成器ではありません.生成式はジェネレータの特殊な形式である:(変数for変数inシーケンス)
ge1=(x for x in range(10))
print(ge1)  # at 0x01DC6E40>
next(ge1)  #0  0    ,        
print(next(ge1)) #1      
print('======')
for item in ge1:

    print(item)   #23456789

2、ジェネレータとは、関数体にyieldキーワードがある関数です
print('============')一般関数
def func1(n):
     for x in range(1,n+1):
         print(x)  #1  2  3
print(func1(3))   #None
print('========')

ビルダー
def func2(n):

    for x in range(1, n + 1):
        print(x)
    yield
print(func2(5))  #

呼び出し関数は関数体を実行したり、戻り値を取得したりするのではなく、ジェネレータであることを示し、ジェネレータアドレスを返します.
この関数はジェネレータになりました
ge2=func2(2)
next(ge2)    # 1  2
ge3=func2(3)
print(next(ge3))    #None    yield      None

nextでジェネレータの要素を取得すると、ジェネレータに対応する関数の関数体を実行し、yieldに遭遇するまで実行し、yieldの後ろの値(デフォルト値None)を戻り値(要素)として保存し、現在の終了位置を保存し、次にジェネレータ要素を取得すると前回の終了位置に続く.
例:
def func2(n):

    for x in range(1, n + 1):
        print(x)
        yield  x
ge4=func2(4)
print(next(ge4))          x=1 
print(next(ge4))          x=2 , x=1   ,          
print(next(ge4))          x=3 , x=1 2   ,          
      
'''
x=1 ,print(1),yield    1,    
x=2 ,print(2),yield    2,    
x=3 ,print(3),yield    3,    
       x=4

四、ファイル操作
ローカルファイルを使用して、データの永続化(ローカライズ)--』データベースファイル、txtファイル、jsonファイル、plis他、バイナリファイルを作成します.
1、ファイル操作——読み書き操作
ファイル内のすべてのファイルにデータを書き込むプロセス:ファイルを開く--』操作(読み取り、書き込み、保存)ファイル--』ファイルを閉じる
2、ファイルを開く、閉じる
ファイルを開く:open(file,mode=“r”,encoding=utf-8)(1)file——)ファイルパス、開くべきファイルを決定する;絶対パス(使用を推奨しない)相対パス:相対パスは現在のpyファイルに対応するフォルダです.フォーマット:./相対パス相対パスは、現在のpyファイルに対応するフォルダの上位フォルダです.フォーマット:../相対パス相対パスは、現在のpyファイルに対応するフォルダの上位フォルダの上位フォルダです.フォーマット:.../相対パス例:open('./text.txt',“r”,encoding='utf-8')(2)mode——』ファイルの開き方(異なる操作に対応して異なる開き方)「r」——」は読み取り専用でファイルを開き、テキスト「rb/br」——」は読み取り操作、読み出したデータはバイナリ形式のデータ「w」——」は書き込み形式でファイル「wb/bw」——」を開き書き込み操作、ファイル「a」——」へのバイナリデータの書き込み操作、追加(3)encoding——」テキスト符号化方式utf—8:ほとんどすべての言語gbkをサポート:英語(4)open関数の戻り値のみをサポート、開かれたファイルオブジェクト(5)ファイルを閉じる:ファイル.close()例えばtext.close()
3、操作ファイル
ファイルを開く
f1=open('./text.txt',"r",encoding='utf-8')

ファイルの内容を読む
ファイル.read()——』は、ファイルの読み書き位置からファイルの終了まで、読み返した結果を返します.ファイル.readline()——』は1行読みます.ファイル.readline()は、ファイル内の各行の内容であるリストを返します.
content=f1.read()
print(type(content),content)   #     wahaha
f1.close()

ファイルの書き込み
f2=open("./text.txt","w",encoding="utf-8")

'w'——'文字列をファイルに書き込み、ファイルの元の内容を完全に上書きします.'wb/bw'——』はバイナリをファイルに書き込み、ファイルの元の内容を完全に上書きします.
f2.write('   ')    #   1
f2.write(content+"   2")   #   1   2
f2.write("wahaha")#   1   2wahaha