跟老齐学Python之Import 模块
认识模块
对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:import random (获取随机数模块)。为了能够对模块有一个清晰的了解,首先要看看什么模块,这里选取官方文档中对它的定义:
代码如下:
A module is a file containing Python definitions and statements. The file name is the module name with the suffix .py appended. Within a module, the module's name (as a string) is available as the value of the global variable name.
都是洋码子,翻译一下不?不!还是只说要点:
•模块就是一个含有python语句的文件
•模块名就是文件名(不要扩展名.py)
那么,那个import random的文件在哪里呢?
用曾经讲过的那个法宝:help()函数看看:
代码如下:
>>> help(random)
然后就出现:
代码如下:
NAME
random - Random variable generators.
FILE
/usr/local/lib/python2.7/random.py
MODULE DOCS
http://docs.python.org/library/random
DESCRIPTION
...
这里非常明显的告诉我们,random模块的文件就是: /usr/local/lib/python2.7/random.py(注意:这个地址是我的计算机中的地址,可能跟看官的不一样,特别是如果看官用的是windows,肯定跟我这个不一样了。)
看官这时候可能有疑问了,import是怎么找到那个文件的?类似文件怎么写?不用着急,这些我都会一一道来。
标准库
看了前面的random这个例子,看官可能立刻想到一个问题:是不是已经有人把很多常用的功能都写成模块了?然后使用者只需要用类似方法调用即可。的确是,比如上面显示的,就不是某个程序员在使用的时候自己编写的,而是在安装python的时候,就被安装在了计算机里面。观察那个文件存储地址,就知道了。
我根据上面得到的地址,列出/usr/local/lib/python2.7/里面的文件,这些文件就是类似random的模块,由于是python安装就有的,算是标配吧,给它们一个名字“标准模块库”,简称“标准库”。
这张图列出了很少一部分存在这个目录中的模块文件。
Python的标准库(standard library)是Python的一个组成部分,也是Python为的利器,可以让编程事半功倍。
如果看官有时间,请经常访问:https://docs.python.org/2/library/,这里列出了所有标准库的使用方法。
有一点,请看官特别注意,对于标准库而言,由于内容太多,恐怕是记不住的。也不用可以的去记忆,只需要知道有这么一个东西。如果在编写程序的时候,一定要想到,对于某个东西,是不是会有标准库支持呢?然后就到google或者上面给出的地址上搜索。
举例:
代码如下:
>>> import sys #导入了标准库sys
>>> dir(sys) #如果不到网页上看,用这种方法可以查看这个标准库提供的各种方法(函数)
['__displayhook__', '__doc__', '__egginsert', '__excepthook__', '__name__', '__package__', '__plen', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', '_mercurial', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'last_traceback', 'last_type', 'last_value', 'long_info', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']
>>> sys.platform #比如这个
'linux2'
>>> sys.version #还有这个
'2.7.6 (default, Nov 13 2013, 19:24:16) \n[GCC 4.6.3]'
>>> help(sys.stdin) #这是查看某个模块方法具体内容的方式
标准库,在编程中经常用到。这里不赘述。只要看官能够知道在哪里找、如何找所需要的标准库即可。
自己编写模块
看官可能比较喜欢“自己动手,丰衣足食”(虽然真的不一定是丰衣足食),在某些必要的时候,还真得自己动手写一些模块。那么怎么编写模块呢?
前面已经交代,模块就是.py文件,所以,只要将某些语句写到一个.py文件中,它就是一个模块了。没有什么太多的秘密。
在某个目录下面建立了一个文件,名称是:mmmm.py,如下图所示,然后编辑这个文件内容。编辑好后保存。
代码是文件内容:
代码如下:
#!/usr/bin/env python
#coding:utf-8
web = "https://qiwsir.github.io"
def my_name(name):
print name
class pythoner:
def __init__(self,lang):
self.lang = lang
def programmer(self):
print "python programmer language is: ",self.lang
图示是文件所在目录,并且在该目录下打开了python的交互模式(我这是在ubuntu下,看官是别的操作系统的化,注意路径,如果遇到问题,可以暂时搁置,看下文)。
从图中可以看出,当前目录中有这个文件:mmmm.py
在交互模式下,仿照对标准库模块的操作方式:
代码如下:
>>> import mmmm
>>> dir(mmmm)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'my_name', 'pythoner', 'web']
>>> mmmm.__doc__ #这个是空的,正是,因为我未曾写过任何文档说明
>>> mmmm.__name__ #名字
'mmmm'
>>> mmmm.__file__ #文件
'mmmm.py'
再看后面的:my_name,pythoner,web,都是我在内容中自己写的。
代码如下:
>>> mmmm.web
'https://qiwsir.github.io'
web是模块mmmm中的一个通过赋值语句建立的变量,在这里,它编程了mmmm的属性,能够通过点号运算访问,其实不仅仅是这类型的赋值,其它通过def,class等,都能做为mmmm模块的属性。
代码如下:
>>> mmmm.my_name
>>> mmmm.pythoner
当然,跟操作标准库一样,一样能够使用help()来看看这些属性的具体内容:
代码如下:
>>> help(mmmm.my_name)
Help on function my_name in module mmmm:
my_name(name)
>>> help(mmmm.pythoner)
Help on class pythoner in module mmmm:
class pythoner
| Methods defined here:
|
| __init__(self, lang)
|
| programmer(self)
怎么调用呢?这样即可:
代码如下:
>>> mmmm.my_name("qiwsir")
qiwsir
当调用模块中的函数的时候,用模块的名称(import mmmm)+点号+函数(注意,函数后面要有括号,如果有参数,括号里面跟参数),即 module_name.funciton(*args)
代码如下:
>>> py = mmmm.pythoner("c++")
>>> py.programmer()
python programmer language is: c++
上面两行,则是演示用绑定的方法调用模块中的类以及类的实例方法。跟以往的相比较,似乎都是在前面多了一个mmmm.
如果感觉这个mmmm比较麻烦,可以用from,具体是这样的:
代码如下:
>>> from mmmm import *
>>> my_name('qiwsir')
qiwsir
>>> web
'https://qiwsir.github.io'
>>> py = pythoner("c++")
>>> py.programmer()
python programmer language is: c++
这次不用总写那么mmmm了。两种方式,哪个更好呢?没有定论。看官在以后的实践中体会,什么时候用什么方式。
上面用from mmmm import ,其中符号,表示将所有的都import进来,用这个方法,也可以只import一部分,如同:
代码如下:
>>> from mmmm import my_name #如果看官前面运行了上述操作,需要关闭交互模式,
#再重启,才能看到下面过程
>>> my_name("qiwsir")
qiwsir
>>> web #没有import这个,所以报错。
Traceback (most recent call last):
File "
NameError: name 'web' is not defined
这就是基本的import模块方法。看官的疑问,还要存着。且听下回分解。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック








![WLAN拡張モジュールが停止しました[修正]](https://img.php.cn/upload/article/000/465/014/170832352052603.gif?x-oss-process=image/resize,m_fill,h_207,w_330)
Windows コンピュータの WLAN 拡張モジュールに問題がある場合、インターネットから切断される可能性があります。この状況はイライラすることがよくありますが、幸いなことに、この記事では、この問題を解決し、ワイヤレス接続を再び正常に動作させるのに役立ついくつかの簡単な提案を提供します。 WLAN 拡張モジュールが停止しました。 WLAN 拡張モジュールが Windows コンピュータで動作を停止した場合は、次の提案に従って修正してください。 ネットワークとインターネットのトラブルシューティング ツールを実行して、ワイヤレス ネットワーク接続を無効にし、再度有効にします。 WLAN 自動構成サービスを再起動します。 電源オプションを変更します。 変更します。詳細な電源設定 ネットワーク アダプター ドライバーを再インストールする いくつかのネットワーク コマンドを実行する それでは、詳しく見てみましょう

この記事では、無線 LAN 拡張モジュールが起動できないことを示すイベント ID10000 を解決する方法について詳しく説明します。このエラーは、Windows 11/10 PC のイベント ログに表示される場合があります。 WLAN 拡張モジュールは、独立系ハードウェア ベンダー (IHV) および独立系ソフトウェア ベンダー (ISV) がカスタマイズされたワイヤレス ネットワーク機能をユーザーに提供できるようにする Windows のコンポーネントです。 Windows のデフォルト機能を追加することで、ネイティブ Windows ネットワーク コンポーネントの機能を拡張します。 WLAN 拡張モジュールは、オペレーティング システムがネットワーク コンポーネントをロードするときに、初期化の一部として開始されます。無線 LAN 拡張モジュールに問題が発生して起動できない場合、イベント ビューアのログにエラー メッセージが表示されることがあります。

1. sys モジュールの紹介 前に紹介した os モジュールは主にオペレーティング システム用ですが、この記事の sys モジュールは主に Python インタプリタ用です。 sys モジュールは Python に付属するモジュールで、Python インタープリターと対話するためのインターフェイスです。 sys モジュールは、Python ランタイム環境のさまざまな部分を処理するための多くの関数と変数を提供します。 2. sys モジュールの一般的に使用されるメソッド: dir() メソッドを使用して、sys モジュールにどのメソッドが含まれているかを確認できます: import sys print(dir(sys))1.sys.argv - コマンド ライン パラメーター sys を取得します。 argv は、プログラムの外部からコマンドを実装するために使用されます。プログラムにはパラメータが渡され、コマンド ライン パラメータの列を取得できます。

はじめに この記事では、Python コレクション モジュールの紹介に引き続き、今回はその中の名前付きタプル、つまり、namedtuple の使い方を主に紹介します。これ以上の苦労はせずに、始めましょう – いいね、フォロー、転送することを忘れないでください~ ^_^名前付きタプルの作成 Python コレクションの名前付きタプル クラスnamedTuples は、タプル内の各位置に意味を与え、コードの読みやすさを向上させます。これらは通常のタプルが使用される場所ならどこでも使用でき、位置インデックスではなく名前によってフィールドにアクセスする機能を追加します。これは、Python 組み込みモジュール コレクションから取得されます。使用される一般的な構文は次のとおりです。 import collections XxNamedT

こんにちは、私の名前はsomenzzです。鄭兄弟と呼んでください。 Python のインポートは非常に直感的ですが、それでも、パッケージがそこにあるにもかかわらず、ModuleNotFoundError が発生することがあります。明らかに、相対パスは非常に正しいですが、エラー ImportError:attemptedrelativeimportwithnoknownparentpackage により、同じディレクトリにモジュールがインポートされ、別のものです。ディレクトリのモジュールは完全に異なります。この記事は、インポートの使用時によく発生するいくつかの問題を分析することで、インポートを簡単に処理するのに役立ちます。これに基づいて、属性を簡単に作成できます。

すべてのデータには最初に「DOB」(生年月日)が自動的に割り当てられます。したがって、ある時点でデータを処理するときに日付と時刻のデータが発生することは避けられません。このチュートリアルでは、Python の datetime モジュールと、pandas や pytz などの周辺ライブラリの使用について説明します。 Python では、日付と時刻に関連するものはすべて datetime モジュールによって処理され、モジュールはさらに 5 つの異なるクラスに分割されます。クラスは、オブジェクトに対応する単なるデータ型です。次の図は、Python の 5 つの日時クラスと、一般的に使用される属性および例をまとめたものです。 3 つの便利なスニペット 1. datet を使用して、文字列を日時形式に変換する

Ansible の動作原理は上図から理解できます: 管理側は管理側への接続に local、ssh、zeromq の 3 つの方法をサポートしています。デフォルトでは ssh ベースの接続が使用されます。この部分は接続に相当します。上のアーキテクチャ図のモジュール; アプリケーション タイプを押すことができます HostInventory (ホスト リスト) の分類は他の方法で実行されます. 管理ノードはさまざまなモジュールを通じて対応する操作を実装します. 単一のモジュールと単一のコマンドのバッチ実行を ad と呼ぶことができます-hoc; 管理ノードは、プレイブックを通じて複数のタスクのコレクションを実装できます。Web サービスのインストールとデプロイ、データベース サーバーのバッチ バックアップなど、ある種の機能を実装します。プレイブックは、システムが通過すると単純に理解できます。

公式ドキュメント: https://docs.ansible.com/ansible/latest/command_guide/intro_adhoc.html はじめに アドホック コマンドは、一時的に入力して実行されるコマンドで、通常はテストとデバッグに使用されます。永続的に保存する必要はなく、アドホックとは簡単に言うと「インスタントコマンド」です。よく使われるモジュール 1. コマンドモジュール(デフォルトモジュール) デフォルトモジュールはシェルほど強力ではありませんが、基本的にコマンドモジュールの機能をシェルモジュールでサポートできます。 【1】ヘルプ ansible-doccommand# 以下の ansible-doccomm の使用を推奨します
