第50課:モジュール:モジュールはプログラムである
4041 ワード
内容はネットに由来し、本人はここで少し整理しただけで、著作権の問題があれば、小甲魚の公式所有に帰属します.
練習問題(小甲魚公式フォーラムから)
0.そもそもPythonのモジュールは何ですか?
モジュールはプログラムです.そう、モジュールとは普段私たちが書いたコードで、保存されているものです.pyの最後のファイルは、独立したモジュールです.
1.私たちは今helloを持っています.pyのファイルにはhi()関数があります.
すみません、私はどのように別のソースファイルtestにいますか?pyの中でhelloを使います.pyのhi()関数は?回答:
2.モジュールを導入する方法はいくつか知っていますか.
答え:三つ.上の問題の答えです.1つ目:importモジュール名;2つ目:fromモジュール名import関数名;3つ目:importモジュール名asの新しい名前(推奨).
3.fromを止める方法を話したことがありますが...import*はあなたの「プライバシー」属性をインポートしますが、どのようにしたか覚えていますか?
答え:モジュールの属性がfromにされたくない場合は...import*をインポートすると、インポートしたくない属性名の前に下線()を付けることができます.importを使用すると...モジュール全体をインポートすると、この非表示の方法は機能しません.
4.a.pyとb.pyの2つのファイルがある場合、内容は以下の通りです.
では、testにいます.pyファイルで以下の操作を実行すると、どのような結果が印刷されますか?
答え:「はい、Bモジュールです~」と印刷されます.2回目にインポートされたbモジュールはaモジュールの同名関数を上書きするため,いわゆる額ネーミング空間の衝突である.だから、プロジェクト、特に大規模なプロジェクトではfromの使用を避けるべきです.import ...,名前の競合を起こさないことを明確にしない限り.
5.下のa.pyまたはb.pyのいずれかのファイルを実行すると、エラーが発生します.この現象を説明してみてください.
答え:これはループネストインポートの問題です.a.pyとb.pyのどちらのファイルを実行しても、ImportError例外が放出されます.これは、あるファイル(a.py)のロード中にモジュールオブジェクトが作成され、対応するコードが実行されるためです.しかし、最初の文を実行するときに別のファイル(from b import y)をインポートする必要があるため、CPUは別のファイル(b.py)をロードします.同様に、別のファイルを実行する最初の文(from a import x)も、インポート前のファイル(a.py)が必要です.このとき,以前のファイルは第1の文のみをインポートする段階にあるため,対応する辞書にはxが存在しないため,例外が投げ出される.次のように変更します.
プログラミング問題
0.Pythonは定数をサポートしていますか?多くの魚油の答えは否定的だと信じていますが、実際にPython内に建てられたネーミングスペースは定数の一部をサポートしています.例えば、私たちがよく知っているTrue、False、Noneなどですが、Pythonは定数を定義する直接的な方法を提供していません.では、この問題の要求はconstモジュールを作成することであり、Pythonが定数をサポートする機能である.
例を挙げると、テストコードは次のとおりです.
実行後の結果は次のとおりです.
constモジュールで私たちはいったい何をして、このモジュールにこんなに「魔力」を持たせたのだろうか.皆さんは小さな甲魚のヒントに従って、一歩一歩やってみれば分かります.ヒント1:Constクラス が必要ですヒント2:Constクラスを書き換える魔法の方法で、インスタンスオブジェクトの属性が変更されたときの動作 を指す.ヒント3: が存在するかどうかを確認します.ヒント4:プロパティの名前が大文字であるかどうかを確認する ヒント5:注意深い魚油が発見されたかもしれませんが、どうやってこのconstモジュールを導入してオブジェクトとして使用しますか(const.NAME=「FishC」)モジュールもオブジェクトになりますか?そう、Pythonではどこにでもいて、あなたの相手があちこちにいます.以下の方法で、あなたのモジュールをクラスAのオブジェクトにフックすることができます.
回答:
1.この授業で学んだことを書いてください.フォーマットは限らず、思い出と復唱は記憶を強化する良い方法です.モジュール1️⃣コンテナ→データのパッケージ2️⃣関数→文のカプセル化3️⃣クラス→メソッドとプロパティのパッケージ4️⃣モジュール→モジュールはプログラム である.ネーミングスペースPythonでは、各モジュールが独立したネーミングスペースを維持します.モジュール内の関数を正常に使用するには、モジュール名を追加する必要があります. インポートモジュール1️⃣importモジュール名2️⃣fromモジュール名import関数名3️⃣importモジュール名as新名(推奨)
練習問題(小甲魚公式フォーラムから)
0.そもそもPythonのモジュールは何ですか?
モジュールはプログラムです.そう、モジュールとは普段私たちが書いたコードで、保存されているものです.pyの最後のファイルは、独立したモジュールです.
1.私たちは今helloを持っています.pyのファイルにはhi()関数があります.
def hi():
print("Hi everyone, I love FishC.com!")
すみません、私はどのように別のソースファイルtestにいますか?pyの中でhelloを使います.pyのhi()関数は?回答:
#
import hello
hello.hi()
#
from hello import hi
hi()
#
import hello as h
h.hi()
2.モジュールを導入する方法はいくつか知っていますか.
答え:三つ.上の問題の答えです.1つ目:importモジュール名;2つ目:fromモジュール名import関数名;3つ目:importモジュール名asの新しい名前(推奨).
3.fromを止める方法を話したことがありますが...import*はあなたの「プライバシー」属性をインポートしますが、どのようにしたか覚えていますか?
答え:モジュールの属性がfromにされたくない場合は...import*をインポートすると、インポートしたくない属性名の前に下線()を付けることができます.importを使用すると...モジュール全体をインポートすると、この非表示の方法は機能しません.
4.a.pyとb.pyの2つのファイルがある場合、内容は以下の通りです.
# a.py
def sayHi():
print(" , A ~")
# b.py
def sayHi():
print(" , B ~")
では、testにいます.pyファイルで以下の操作を実行すると、どのような結果が印刷されますか?
# test.py
from a import sayHi
from b import sayHi
sayHi()
答え:「はい、Bモジュールです~」と印刷されます.2回目にインポートされたbモジュールはaモジュールの同名関数を上書きするため,いわゆる額ネーミング空間の衝突である.だから、プロジェクト、特に大規模なプロジェクトではfromの使用を避けるべきです.import ...,名前の競合を起こさないことを明確にしない限り.
5.下のa.pyまたはb.pyのいずれかのファイルを実行すると、エラーが発生します.この現象を説明してみてください.
# a.py
from b import y
def x():
print('x')
# b.py
from a import x
def y():
print('y')
>>>
Traceback (most recent call last):
........
ImportError: cannot import name 'x'
答え:これはループネストインポートの問題です.a.pyとb.pyのどちらのファイルを実行しても、ImportError例外が放出されます.これは、あるファイル(a.py)のロード中にモジュールオブジェクトが作成され、対応するコードが実行されるためです.しかし、最初の文を実行するときに別のファイル(from b import y)をインポートする必要があるため、CPUは別のファイル(b.py)をロードします.同様に、別のファイルを実行する最初の文(from a import x)も、インポート前のファイル(a.py)が必要です.このとき,以前のファイルは第1の文のみをインポートする段階にあるため,対応する辞書にはxが存在しないため,例外が投げ出される.次のように変更します.
# a.py
import b
def x():
print('x')
# b.py
import a
def y():
print('y')
# test.py
a.x()
b.y()
プログラミング問題
0.Pythonは定数をサポートしていますか?多くの魚油の答えは否定的だと信じていますが、実際にPython内に建てられたネーミングスペースは定数の一部をサポートしています.例えば、私たちがよく知っているTrue、False、Noneなどですが、Pythonは定数を定義する直接的な方法を提供していません.では、この問題の要求はconstモジュールを作成することであり、Pythonが定数をサポートする機能である.
例を挙げると、テストコードは次のとおりです.
# const
# const Python
import const
const.NAME = "FishC"
print(const.NAME)
try:
#
const.NAME = "FishC.com"
except TypeError as Err:
print(Err)
try:
#
const.name = "FishC"
except TypeError as Err:
print(Err)
実行後の結果は次のとおりです.
>>>
FishC
!
!
constモジュールで私たちはいったい何をして、このモジュールにこんなに「魔力」を持たせたのだろうか.皆さんは小さな甲魚のヒントに従って、一歩一歩やってみれば分かります.
'''
sys.models , Python , 。 , 。
'''
import sys
sys.modules[__name__] = A()
回答:
# Python
class Const:
def __setattr__(self, name, value):
if name in self.__dict__:
raise TypeError(' !')
if not name.isupper():
raise TypeError(' !')
self.__dict__[name] = value
import sys
sys.modules[__name__] = Const()
1.この授業で学んだことを書いてください.フォーマットは限らず、思い出と復唱は記憶を強化する良い方法です.