python導入模塊--案例

1 導入模塊

1.1 問題

本案例要求先編寫一個star模塊,主要要求如下:

  • 建立工作目錄 ~/bin/
  • 創建模塊文件 ~/bin/star.py
  • 模塊中創建pstar函數,實現打印50個星號的功能

然后練習導入模塊,調用模塊中的函數:

  • 在交互解釋器中導入模塊
  • 調用模塊的函數

1.2 方案

使用vim當作文本編輯器編寫python腳本,使用RHEL6系統中自帶的python解釋器加載模塊。

注意,模塊及函數在后續課程中有詳細介紹,這里只是因為經常要用到導入模塊,所以需要大致了解一下。

模塊支持從邏輯上組織python代碼。當代碼量變得相當大的時候,最好把代碼分成一些有組織的代碼段,前提是保證它們的彼此交互。

這些代碼段是共享的,所以python允許調入一個模塊,允許使用其他模塊的屬性來利用之前的工作成果,實現代碼重用。這個把其他模塊中屬性附加到你的模塊中的操作叫做導入(import)。

給定一個模塊名之后,只可能有一個模塊被導入到python解釋器中,所以在不同模塊間不會出現名稱交叉現象;每個模塊都定義了它自己的唯一的名稱空間,訪問一個模塊的屬性可以使用句點表示法,比訪問star模塊中的pstar函數的寫法為:star.pstar()。

1.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:創建目錄結構

Linux在執行命令時,它會到PATH環境變量定義的路徑中去查找,如果查到則執行,如果查不到則提示命令找不到。

為了使得編寫的腳本在任意位置可以直接執行,并支持按TAB鍵補齊,最好將命令放到PATH環境變量定義的路徑中。

在Linux系統中,每個用戶的家目錄下的bin目錄,默認在PATH環境變量中,但是系統默認并沒有創建該目錄。

  1. [root@py01 ~]# echo $PATH
  2. /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

2)根據PATH變量內容創建bin目錄

  1. [root@py01 ~]# mkdir /root/bin

步驟二:創建模塊文件

1)創建模塊文件

python的模塊名就是腳本文件名去掉.py的擴展名,所以star模塊的文件名就是star.py。

在創建文件時,不要使用python已有的模塊名。因為在import模塊時,如果自己創建的模塊文件和python自帶的模塊重名,那么,用戶自己創建的模塊將被導入,用戶也就無法使用python自身的模塊了。

判斷python是否擁有某個模塊,最簡單的辦法就是,進入到python交互解釋器中,然后執行import命令,如果提示ImportError則表示python默認沒有該模塊。

  1. [root@py01 ~]# cd bin
  2. [root@py01 ~]# vim star.py

2)編寫pstar函數

像shell本一樣,python腳本文件的第一行也是解釋器。

在python中,使用def定義函數,def后面緊跟函數名,函數名后面是一對圓括號,圓括號包含可選的參數。

需要注意的是,()并不是函數名的一部分,另外最后不要丟掉冒號。在python中,如果一個關鍵字后面有子語句塊,那么該關鍵字的行尾都需要加冒號。

函數體部分(代碼組)必須縮進,一般縮進4個空格,而且所有的子語句必須縮進相同的空白。

函數定義只是說有這樣的功能,并不執行。所以該程序文件如果直接以腳本的方式執行,那么它不會產生任何輸出。

  1. #!/usr/bin/env python
  2. def pstar():
  3. print '*' * 50

步驟三:導入模塊并測試

在這里需要注意的是,需要在模塊文件所在的目錄下打開交互解釋器。因為python在導入模塊時會在固定的幾個位置去搜索模塊,如果找到則導入,否則將出錯。當前的工作目錄也是python在搜索模塊時會查找的路徑。

  1. [root@py01 bin]# python
  2. Python 2.6.6 (r266:84292, Oct 12 2012, 14:23:48)
  3. [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> import star

解釋器需要知識執行的是哪個模塊中的函數,所以寫法應該是:“模塊.函數”。

注意,函數名后面的圓括號不要丟掉,python調用函數使用圓括號,表示執行該函數的意思。如果沒有圓括號,只是引用,不調用,也就是不會執行該函數。

  1. >>> star.pstar()
  2. **************************************************

轉載于:https://www.cnblogs.com/fanfanfanlichun/p/8723450.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280690.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280690.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280690.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

css常用命名

常用的CSS命名 頭:header 內容:content/container 尾:footer 導航:nav 側欄:sidebar 欄目:column 頁面外圍控制整體佈局寬度:wrapper 左右中:left right center 登錄條:l…

***關于WP的郵件無法發送問題的總結(原創)

1.用FTP打開 /wp-include/class-smtp.php ,最好是下載下來,搜索一下,查找到如下的代碼: $this->smtp_conn stream_socket_client($host . ":" . $port,$errno,$errstr,$timeout,STREAM_CLIENT_CONNECT,$socket_cont…

C# 簡單方式運行powershell文件/使用cmd命令運行ps1

一、目的、構想 1.C# winfrom編譯的tool 運行一個powershell文件。 2.只需要運行即可,不需要返回值。 3.網上部分資料需要額外添加dll。 3.已經有cmd執行命令的函數,能否直接在cmd運行? 4.在cmd黑色窗口輸入powershell 能進入powershell…

?.Net 7 AOT 徹底解析下(完結篇)

楔子:本篇是承繼前面三篇文章而來,分別為:.Net 7 的 AOT 和 CLR有什么區別?.Net 7 的 R2R,Crossgen2是什么?.Net 7 的AOT原理簡析通過以上三篇的基礎,本篇來徹底解析下AOT這門技術的底層原理。AOT此終,不再…

cmd暫停快捷鍵_是否有鍵盤快捷鍵可以暫停正在運行的CMD窗口的輸出?

cmd暫停快捷鍵When running a batch script, you may need or want to pause the output in the CMD window so that you can look things over. Is there an easy way to pause, then restart the output? Today’s SuperUser Q&A post has the answer to help with a re…

bash快捷鍵

Ctrl h :回退一個字符Ctrl f :光標前進一個字符Ctrl b :光標后退一個字符Ctrl w :刪除光標之前的一個字符串(進入剪切板)Ctrl u :刪除光標前的所有字符 (進入剪切板&#xff09…

J - 青蛙的約會(擴展歐幾里得)

https://vjudge.net/contest/218366#problem/J 第一步追及公式要寫對:ynk-(xmk)pL > (n-m)klpx-y 可以看出擴展歐幾里得原型,這里注意擴展歐幾里得求出的是任意解,非最優,要推出最小解k。 (n-m)xlygcd > (n-m)(x*(x-y)/gcd)…

C# 簡單方式解壓Zip文件/使用VS2019自帶功能

一、目的、構想 1.直接解壓zip文檔。 2.網上資料不少需要外部dll。 3. 找到可以不需要外部dll方法,分享。 二、code實現 using System.IO.Compression;string filePath "c:\Server\fileList"; string zipPath "C:\Server\Download\Auto.zip&quo…

在 Docker 中使用 flannel - 每天5分鐘玩轉 Docker 容器技術(60)

上一節我們安裝和配置了 flannel,本節在 Docker 中使用 flannel。配置 Docker 連接 flannel編輯 host1 的 Docker 配置文件 /etc/systemd/system/docker.service,設置 --bip 和 --mtu。這兩個參數的值必須與 /run/flannel/subnet.env 中 FLANNEL_SUBNET …

使用.NET7和C#11打造最快的序列化程序-以MemoryPack為例

譯者注本文是一篇不可多得的好文,MemoryPack 的作者 neuecc 大佬通過本文解釋了他是如何將序列化程序性能提升到極致的;其中從很多方面(可變長度、字符串、集合等)解釋了一些性能優化的技巧,值得每一個開發人員學習,特別是框架的開…

永不丟失照片:防彈照片備份的完整指南

There’s nothing as precious and irreplaceable as your personal photos and, with a little forethought and planning, there’s no reason to ever feel the heartbreak of losing even a single one of them to theft, broken devices, or disaster. 沒有比您的個人照片…

C# 檢查當前系統已安裝的程序app/兩種方法檢測

一、目的、構思 1.檢測當前系統有沒有安裝某個程序,如果沒有就重新安裝。 2.在網上找到了兩種方法,可惜都找不到需要檢測的app。 二、code實現 1.查找注冊列表方式。要在winform的project使用,在console project 貌似找不到Microsoft.Win3…

Integer源碼解析

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/wangyangzhizhou/article/details/77196626 概況 Java的Integer類主要的作用就是對基本類型int進行封裝,提供了一些處理int類型的方法,比如int到Strin…

MySQL InnoDB存儲引擎

呵呵噠。。。 MySQL體系結構和存儲引擎 首先要搞懂的是什么是數據庫,什么是數據庫實例。 數據庫:物理操作系統文件或其他形式文件類型的集合。 實例:MySQL數據庫由后臺線程以及一個共享內存區組成,實例才是真正對數據庫進行操作的…

Blazor學習之旅 (8) MudBlazor組件庫介紹

【Blazor】| 總結/Edison Zhou大家好,我是Edison。為了實現一個Web應用系統,需要有個看起來不丑的UI,而對于.NET程序員來說要做全棧開發還是有點難,而本篇介紹的這個UI組件庫正好可以幫助我們解決這個問題!MudBlaozr是…

棉花糖多少錢_如何在6.0棉花糖及更高版本中訪問Android的正在運行的應用程序列表...

棉花糖多少錢In Android 5.x and below, accessing your list of running apps was simple—you’d jump into Settings > Apps > Running. Easy! In Android 6.0, however, Google moved this setting. It’s still not super difficult to find, but it’s a little tr…

IE不能直接顯示PDF的原因分析和解決方法

>>>>>問題<<<<<因為有系統用iframe顯示PDF&#xff0c;但PDF有時卻并不能順利地在流覽器中顯示&#xff0c;而是跳出下載對話框&#xff0c;要求下載&#xff0c;給user帶來很多困擾&#xff0c;也給我們系統維護人員帶來了麻煩&#xff0c;用了…

C# 程序圖標設置/winform 圖標

一、目的、實際情況 1.編寫一個winform 程序&#xff0c;發現有一個圖標非常有意義。區分其他程序&#xff0c;以及感覺在做產品而不是寫代碼。 2.添加圖標圖片發現&#xff0c;需要用ico格式。在線轉換&#xff08;某度搜索&#xff09;還是不靠譜。要微信登陸&#xff0c;登…

數字化轉型,究竟在“轉”什么?

這是頭哥侃碼的第265篇原創「頭哥嘮B嘮」這個欄目已經持續了幾個月了&#xff0c;沒想到還在繼續進行&#xff0c;并收獲了很多朋友們的喜愛。非常感謝大家的支持&#xff01;在上次的直播中&#xff0c;我找來了我的老熟人們。一個是右軍老師&#xff0c;之前 APISIX 的很多內…

C++ Primer 第Ⅲ部分筆記——類設計者的工具

1.對象移動 1.1右值引用 右值引用區別于普通引用&#xff0c;用兩個&表示 返回左值引用的函數&#xff0c;連同賦值、下標、解引用和前置遞增遞減運算符返回左值 返回非引用的函數&#xff0c;連同算術、關系、位以及后置遞增遞減運算符都生成右值 我們不能將左值引用綁定到…