導航:首頁 > 編程語言 > python程序入口參數

python程序入口參數

發布時間:2023-01-30 03:02:25

python編程問題

你怎麼可以兩個變數等於一個變數:

改成:

importsys

script,user_name=sys.argv,sys.argv
prompt=">"

print"Hi%sI'mthe%sscript"%(user_name,script)
print"I'dliketoaskyouafewquestions"
print"Doyoulikeme%s"%user_name
likes=raw_input(prompt)

print"wheredoyoulive%s"%user_name
lives=raw_input(prompt)

print"whatkindofcomputerdoyouhave?"
computer=raw_input(prompt)
print"""
Alright,soyousaid%raboutlikingme.youlivein%r
Notsurewherethatis.Andyouhavea%rcomputer.nice

"""%(likes,lives,computer)

⑵ 求幫忙簡單解釋一下這個python程序,急,在線等,謝謝了!

defo(s):#定義函數o()參數為s
l=len(s)#把s(也就是從程序入口傳進來的參數)的長度值賦給l
returnlen(set([a+b+c
forainsforbinsforcins])
)==l*(l+1)*(l+2)//6
#return就是返回的意思,此處是返回布爾值(true/false)
#運算符符號==為比較兩者是否相等,如果相等返回真,如果不不相等返回假


M=int(input())#將用戶輸入的值轉化為整型並賦給M
N=3**M#將3的M次冪賦值給N
i=1#賦值語句
s=M*[i]#生成列表列表長度為M列表內容為M個i(也就是1)。
whilei:#當i不為0時程序始終在循環塊內執行
ifs[i]-N:#判斷語句如果列表中第i+1位的值與N相等則執行下列語句否則跳到最後一個else語句
s[i]=s[i]+1#將列表s的第i+1位的值增1
ifo(s[:i+1]):#調用自定義函數o(s)將列表前兩位的值傳如自定義函數中能得到該函數返回的bool值如果為真則往下執行否則跳出該if-else塊
ifi<M-1:#如果M大於2則:
i=i+1#i增1
s[i]=s[i-1]#賦值
else:
N=s[-1]#N等於s列表最後一個的值
else:
i=i-1#賦值i減1,當i為0的時候跳出循環語句
print(N)#列印N的值

⑶ 這個python程序的入口在哪

可以自己定義入口(main)

在代碼最後面加上

if__name__=='__main__':
M=Macro()#實例化類文件
M.ExecuteBlock()#調用類文件的方法

這個實際上類似於C 或者 java 的main()

假設這個文件叫做mac.py

命令行里執行

pythonmac.py
#就會執行if__name__=='__main__':下面的代碼

⑷ python語言中有類似C語言或者java中程序執行時的入口方法main(),如果沒有那麼它是怎麼執行的呢

沒有,python是解釋型的語言,
看見第一個可以被執行的語句就順序執行。
比如

def abc(ab): #這是函數,沒調用沒執行。
print ab

ddd="abcdefg" #賦值語句,執行
print ddd #在標准輸出上輸出ddd的內容,執行
abc(ddd) 函數調用執行。

⑸ python 中的if __name__=='__main__': main()是什麼 意思呢

一個 Python 源碼文件除了可以被直接運行外,還可以作為模塊(也就是庫)被導入。不管是導入還是直接運行,最頂層的代碼都會被運行(Python 用縮進來區分代碼層次)。而實際上在導入的時候,有一部分代碼我們是不希望被運行的。

if __name__ == '__main__'就相當於是 Python模擬的程序入口。Python 本身並沒有規定這么寫,這只是一種編碼習慣。由於模塊之間相互引用,不同模塊可能都有這樣的定義,而入口程序只能有一個。到底哪個入口程序被選中,這取決於__name__的值。

舉例子說明一下,假設有一個 const.py 文件,內容如下:

PI = 3.14

def main():

print "PI:", PI

main()

(5)python程序入口參數擴展閱讀

如果模塊是被直接運行的,則代碼塊被運行,如果模塊是被導入的,則代碼塊不被運行。實際上,這個問題還可以衍生出其他的一些知識點,例如__main__.py文件與 Python 的-m參數。

輸出結果只列出了關鍵的部分,應該很容易看出他們之間的差異。直接運行是把 run.py 文件所在的目錄放到了 sys.path 屬性中。以模塊方式運行是把你輸入命令的目錄(也就是當前工作路徑),放到了 sys.path 屬性中。

⑹ 【Python基礎】python基本語法規則有哪些

1.關於編碼:
默認情況下,Python 3 源碼文件以 UTF-8 編碼,所有字元串都是 unicode 字元串。 當然你也可以為源碼文件指定不同的編碼:
# -*- coding: cp-1252 -*-
2.標識符:
第一個字元必須是字母表中字母或下劃線,其他的部分由字母、數字和下劃線組成。
標識符對大小寫敏感。
在 Python 3 中,可以用中文作為變數名,非 ASCII 標識符也是允許的了。
3.保留字:
保留字即關鍵字,我們不能把它們用作任何標識符名稱。
Python 的標准庫提供了一個 keyword 模塊,可以輸出當前版本的所有關鍵字:
代碼:
import keyword
keyword.kwlist
結果:
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
4.關於注釋:
單行注釋以 # 開頭
多行注釋可以用多個 # 號,還有 ''' 和 """
5.縮進與多行語句:
Python最具特色的就是使用縮進來表示代碼塊,不需要使用大括弧 {} 。
縮進的空格數是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數
Python 通常是一行寫完一條語句,但如果語句很長,我們可以使用反斜杠(\)來實現多行語句,例如:
代碼:total = item_one + \
item_two + \
item_three
在 [], {}, 或 () 中的多行語句,不需要使用反斜杠(\),例如:
代碼:total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']
6.數字(Number)類型:
Python中數字有四種類型:整數、布爾型、浮點數和復數。
int (整數), 如 1, 只有一種整數類型 int,表示為長整型,沒有 python2 中的 Long。
bool (布爾), 如 True。
float (浮點數), 如 1.23、3E-2
complex (復數), 如 1 + 2j、 1.1 + 2.2j
7.字元串:
python中單引號和雙引號使用完全相同。
使用三引號('''或""")可以指定一個多行字元串。
轉義符 '\'
反斜杠可以用來轉義,使用r可以讓反斜杠不發生轉義。。 如 r"this is a line with \n" 則\n會顯示,並不是換行。
按字面意義級聯字元串,如"this " "is " "string"會被自動轉換為this is string。
字元串可以用 + 運算符連接在一起,用 * 運算符重復。
Python 中的字元串有兩種索引方式,從左往右以 0 開始,從右往左以 -1 開始。
Python中的字元串不能改變。
Python 沒有單獨的字元類型,一個字元就是長度為 1 的字元串。
字元串的截取的語法格式如下:變數[頭下標:尾下標:步長]
代碼示例:
#!/usr/bin/python3
str='Runoob'
print(str) # 輸出字元串
print(str[0:-1]) # 輸出第一個到倒數第二個的所有字元
print(str[0]) # 輸出字元串第一個字元
print(str[2:5]) # 輸出從第三個開始到第五個的字元
print(str[2:]) # 輸出從第三個開始後的所有字元
print(str * 2) # 輸出字元串兩次
print(str + '你好') # 連接字元串
print('hello\nrunoob') # 使用反斜杠(\)+n轉義特殊字元
print(r'hello\nrunoob') # 在字元串前面添加一個 r,表示原始字元串,不會發生轉義
8.空行:
函數之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。
空行與代碼縮進不同,空行並不是Python語法的一部分。書寫時不插入空行,Python解釋器運行也不會出錯。但是空行的作用在於分隔兩段不同功能或含義的代碼,便於日後代碼的維護或重構。
記住:空行也是程序代碼的一部分。
9.等待用戶輸入input:
執行下面的程序在按回車鍵後就會等待用戶輸入:
input("\n\n按下 enter 鍵後退出。")
以上代碼中 ,"\n\n"在結果輸出前會輸出兩個新的空行。一旦用戶按下 enter 鍵時,程序將退出。
10.同一行顯示多條語句:
Python可以在同一行中使用多條語句,語句之間使用分號(;)分割,以下是一個簡單的實例:
import sys; x = 'runoob'; sys.stdout.write(x + '\n')
11.代碼組:
縮進相同的一組語句構成一個代碼塊,我們稱之代碼組。
像if、while、def和class這樣的復合語句,首行以關鍵字開始,以冒號( : )結束,該行之後的一行或多行代碼構成代碼組。
我們將首行及後面的代碼組稱為一個子句(clause)。
12.Print輸出:
Print 輸出
print 默認輸出是換行的,如果要實現不換行需要在變數末尾加上 end="":
代碼:
x="a"
y="b"
# 換行輸出
print( x )
print( y )
# 不換行輸出
print( x, end=" " )
print( y, end=" " )
13.import 與 from...import
在 python 用 import 或者 from...import 來導入相應的模塊。
將整個模塊(somemole)導入,格式為: import somemole
從某個模塊中導入某個函數,格式為: from somemole import somefunction
從某個模塊中導入多個函數,格式為: from somemole import firstfunc, secondfunc, thirdfunc
將某個模塊中的全部函數導入,格式為: from somemole import *
代碼:
導入 sys 模塊
import sys
print ('命令行參數為:')
for i in sys.argv:
print (i)
print ('\n python 路徑為',sys.path)
導入 sys 模塊的 argv,path 成員
from sys import argv,path # 導入特定的成員
print('path:',path) # 因為已經導入path成員,所以此處引用時不需要加sys.path
14.命令行參數:
很多程序可以執行一些操作來查看一些基本信息,Python可以使用-h參數查看各參數幫助信息:
代碼:
$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser (also PYTHONDEBUG=x)
-E : ignore environment variables (such as PYTHONPATH)
-h : print this help message and exit
[ etc. ]
15.一個有用的函數:help( )
調用 python 的 help() 函數可以列印輸出一個函數的文檔字元串:
# 如下實例,查看 max 內置函數的參數列表和規范的文檔
>>> help(max)
……顯示幫助信息…… 按下 : q 兩個按鍵即退出說明文檔
如果僅僅想得到文檔字元串:
>>> print(max.__doc__) # 注意,doc的前後分別是兩個下劃線
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value
With a single iterable argument, return its biggest item. The
default keyword-only argument specifies an object to return if
the provided iterable is empty.
With two or more arguments, return the largest argument.

⑺ vscode如何調試python

初始化配置

配置在調試會話期間驅動VS Code的行為。 配置在launch.json文件中定義,該文件存儲在工作區的.vscode文件夾中。

注意為了更改調試配置,您的代碼必須存儲在一個文件夾中。

要使用Python配置生成launch.json文件,請執行以下步驟:

1.選擇設置按鈕(在上圖中圈出)或使用Debug> Open configurations菜單命令。

2.將從命令選項板打開配置菜單,允許您為打開的文件選擇所需的調試配置類型。 現在,在出現的Select a debug configuration菜單中,選擇Python File。

注意通過調試面板啟動調試會話,F5或調試>啟動調試,如果不存在配置,也會打開調試配置菜單。

然後,Python擴展創建並打開一個launch.json文件,該文件包含基於您之前選擇的預定義配置,在本例中為Python文件。 您可以修改配置(例如,添加參數),還可以添加自定義配置。

更多的配置

默認情況下,VS Code僅顯示Python擴展提供的最常見配置。 您可以使用列表和launch.json編輯器中顯示的「添加配置」命令選擇要包含在launch.json中的其他配置。 當您使用該命令時,VS Code會提示您所有可用配置的列表(請務必向下滾動以查看所有Python選項):

選擇Node.js:Gulp任務會產生以下結果:

在調試過程中,狀態欄顯示左下方的當前配置; 右邊是當前的調試解釋器。 選擇配置會顯示一個列表,您可以從中選擇不同的配置:

默認情況下,調試器使用與VS Code的其他功能相同的python.pythonPath工作空間設置。 要使用不同的解釋器進行特定的調試,請在launch.json中為pythonPath設置適用的調試器配置,如下一節所述。 或者,選擇狀態欄上的命名解釋器以選擇另一個更新python.pythonPath。

設置配置選項

首次創建launch.json時,有兩種標准配置在編輯器中的集成終端(VS代碼內部)或外部終端(VS代碼外部)中運行活動文件:

具體設置將在以下部分中介紹。 您還可以添加標准配置中未包含的其他設置,例如args。

name

提供VS Code下拉列表中顯示的調試配置的名稱。

type

標識要使用的調試器類型; 用於Python代碼。

request

指定調試的模式

launch:指定調試起始文件program

attach:指定調試掛載進程

program

提供python程序的入口模塊(啟動文件)的完全限定路徑。 值:${file}, 常用於默認配置,使用編輯器中當前活動的文件。 通過指定特定的啟動文件,無論打開哪個文件,您始終可以確保使用相同的入口點啟動程序。 例如:

"program": "/Users/Me/Projects/PokemonGo-Bot/pokemongo_bot/event_handlers/__init__.py",

您還可以依賴工作區根目錄中的相對路徑。 例如,如果是根「/Users/Me/Projects/PokemonGo-Bot」,你可以像這樣使用

"program": "${workspaceFolder}/pokemongo_bot/event_handlers/__init__.py",

pythonPath

指向用於調試的Python解釋器,它可以是包含Python解釋器的文件夾。 該值可以使用變數${workspaceFolder}和${workspaceFolder}/.venv如果未指定,則此設置默認為在中標識的解釋器python.pythonPath,

或者,您可以使用在每個平台上定義的自定義環境變數來包含要使用的Python解釋器的完整路徑,這樣就不需要其他文件夾路徑。

args

指定傳遞給Python程序的參數。 由空格分隔的參數字元串的每個元素都應包含在引號內,例如:

"args": ["--quiet", "--norepeat", "--port", "1593"],

stopOnEntry

設置為true的時候,打破正在調試的程序的第一行的調試器。 如果省略(默認值)或設置為false,調試器將程序運行到第一個斷點。

console

指定程序輸出的顯示方式。

cwd

指定調試器的當前工作目錄,該目錄是代碼中使用的任何相對路徑的基本文件夾。 如果省略,則默認為${workspaceFolder}vscode的工作目錄,作為一個例子${workspaceFolder}包含了python代碼文件夾或者文件,包含了app.py

配置如下:

redirectOutput

省略或設置為時true(默認值),使調試器將程序的所有輸出列印到VS Code調試輸出窗口。 如果設置為false,程序輸出不會顯示在調試器輸出窗口中。

使用時通常禁用此選項

"console": "integratedTerminal"

"console": "externalTerminal"

因為不需要在調試控制台中復制輸出。

justMyCode

省略或設置為true(默認值),僅將調試限制為用戶編寫的代碼。 調成false還可以調試標准庫函數。

django

可以調試django框架

env

為調試器進程設置可選的環境變數,而不是調試器始終繼承的系統環境變數。

envFile

包含環境變數定義的文件的可選路徑。 請參閱配置Python環境 - 環境變數定義文件。

在代碼中調用斷點

在Python代碼中,您可以調用斷點 在調試會話期間要暫停調試器的任何位置。

斷點驗證

Python擴展自動檢測在非可執行行上設置的斷點,例如 通過 語句或多行語句的中間。 在這種情況下,運行調試器會將斷點移動到最近的有效行,以確保代碼執行在此時停止。

附加到本地腳本

在某些情況下,您需要調試由另一個進程在本地調用的Python腳本。 例如,您可能正在調試為特定處理作業運行不同Python腳本的Web伺服器。 在這種情況下,您需要在啟動後將VS Code調試器附加到腳本:

1.運行VS Code,打開包含腳本的文件夾或工作區,然後創建一個launch.json 對於該工作空間,如果尚不存在。

2.在腳本代碼中,添加以下內容並保存文件:

3.使用終端打開終端:創建新的集成終端,激活腳本的選定環境。在終端中,使用python -m pip install --upgrade ptvsd安裝ptvsd軟體包。

4.在終端中,使用腳本啟動Python,例如python3 myscript.py。 您應該看到代碼中包含的「等待調試器附加」消息,並且腳本在ptvsd.wait_for_attach()調用時停止。

5.切換到Debug視圖,從Debugger下拉列表中選擇Python:Attach,然後啟動調試器。

python學習網,免費的在線學習python平台,歡迎關注!

⑻ python怎麼設置手機軟體參數

app自動化(二)python代碼操控手機終端
1.
在cmd命令輸入(adb connect 本地地址:模擬器埠號)來連接模擬器,每個模擬器的默認埠號都不同,不懂的可以在網路查一下 adb connect 127.0.0.1:62001
2.
查看已連接設備列表,查看模擬器是否連接成功 adb devices
3.
查看被操控app的包名以及主程序入口:aapt mp badging app包的路徑。

⑼ 在Python中定義Main函數

目錄

許多編程語言都有一個特殊的函數,當操作系統開始運行程序時會自動執行該函數。這個函數通常被命名為main(),並且依據語言標准具有特定的返回類型和參數。另一方面,Python解釋器從文件頂部開始執行腳本,並且沒有自動執行的特殊函數。

盡管如此,為程序的執行定義一個起始點有助於理解程序是如何運行的。Python程序員提出了幾種方式對此進行實現。

本文結束時,您將了解以下內容:

Python中的基本main()函數

一些Python腳本中,包含一個函數定義和一個條件語句,如下所示:

此代碼中,包含一個main()函數,在程序執行時列印Hello World!。此外,還包含一個條件(或if)語句,用於檢查__name__的值並將其與字元串"__main__"進行比較。當if語句為True時,Python解釋器將執行main()函數。更多關於Python條件語句的信息可以由此獲得。

這種代碼模式在Python文件中非常常見,它將作為腳本執行並導入另一個模塊。為了幫助理解這段代碼的執行方式,首先需要了解Python解釋器如何根據代碼的執行方式設置__name__。

Python中的執行模式

Python解釋器執行代碼有兩種方式:

更多內容可參考如何運行Python腳本。無論採用哪種方式,Python都會定義一個名為__name__的特殊變數,該變數包含一個字元串,其值取決於代碼的使用方式。

本文將如下示例文件保存為execution_methods.py,以 探索 代碼如何根據上下文改變行為:

在此文件中,定義了三個對print()函數的調用。前兩個列印一些介紹性短語。第三個print()會先列印短語The value __name__ is,之後將使用Python內置的repr()函數列印出__name__變數。

在Python中,repr()函數將對象轉化為供解釋器讀取的形式。上述示例通過使用repr()函數來強調__name__的值為字元串。更多關於repr()的內容可參考Python文檔。

在本文中,您將隨處可見文件(file),模塊(mole)和腳本(script)這三個字眼。實際上,三者之間並無太大的差別。不過,在強調代碼目的時,還是存在細微的差異:

「如何運行Python腳本」一文也討論了三者的差別。

基於命令行執行

在這類方法中,Python腳本將通過命令行來執行。

執行腳本時,無法與Python解釋器正在執行的代碼交互。關於如何通過命令行執行代碼的詳細信息對本文而言並不重要,但您可以通過展開下框閱讀更多有關Windows,Linux和macOS之間命令行差異的內容。

命令行環境

不同的操作系統在使用命令行執行代碼時存在細微的差異。

在Linux和macOS中,通常使用如下命令:

美元符號($)之前的內容可能有所不同,具體取決於您的用戶名和計算機名稱。您鍵入的命令位於$之後。在Linux或macOS上,Python3的可執行文件名為python3,因此可以通過輸入python3 script_name.py來運行python腳本。

在Windows上,命令提示符通常如下所示:

根據您的用戶名,>之前的內容可能會有所不同,您輸入的命令位於>之後。在Windows上,Python3的可執行文件通常為python。因此可以通過輸入python script_name.py來運行python腳本。

無論哪種操作系統,本文的Python腳本的輸出結果都是相同的。因此本文以Linux和macOS為例。

使用命令行執行execution_methods.py,如下所示:

在這個示例中,__name__具有值'__main__',其中引號(')表明該值為字元串類型。

請記住,在Python中,使用單引號(')和雙引號(")定義的字元串沒有區別。更多關於字元串的內容請參考Python的基本數據類型。

如果在腳本中包含"shebang行"並直接執行它(./execution_methods.py),或者使用IPython或Jupyter Notebook的%run,將會獲取相同的結果。

您還可以通過向命令行添加-m參數的方法實現以模塊的方式執行。通常情況下,推薦如下方式pip: python3 -m pip install package_name。

添加-m參數將會運行包中__main__.py的代碼。更多關於__main__.py文件的內容可參考如何將開源Python包發布到PyPI中。

在三種情況中,__name__都具有相同的值:字元串'__main__'。

技術細節:Python文檔中具體定義了__name__何時取值為'__main__'。

當通過標准輸入,腳本或者交互提示中讀取數據時,模塊的__name__將取值為'__main__'。(來源)

__name__與__doc__,__package__和其他屬性一起存儲在模塊的全局命名空間。更多關於屬性的信息可參考Python數據模型文檔,特別是關於模塊和包的信息,請參閱Python Import文檔。

導入模塊或解釋器

接下來是Python解釋器執行代碼的第二種方式:導入。在開發模塊或腳本時,可以使用import關鍵字導入他人已經構建的模塊。

在導入過程中,Python執行指定模塊中定義的語句(但僅在第一次導入模塊時)。要演示導入execution_methods.py文件的結果,需要啟動Python解釋器,然後導入execution_methods.py文件:

在此代碼輸出中,Python解釋器執行了三次print()函數調用。前兩行由於沒有變數,在輸出方面與在命令行上作為腳本執行時完全相同。但是第三個輸出存在差異。

當Python解釋器導入代碼時,__name__的值與要導入的模塊的名稱相同。您可以通過第三行的輸出了解這一點。__name__的值為'execution_methods',是Python導入的.py文件。

注意如果您在沒有退出Python時再次導入模塊,將不會有輸出。

注意:更多關於導入在Python中如何工作的內容請參考官方文檔和Python中的絕對和相對導入。

Main函數的最佳實踐

既然您已經了解兩種執行方式上的差異,那麼掌握一些最佳實踐方案還是很有用的。它們將適用於編寫作為腳本運行的代碼或者在另一個模塊導入的代碼。

如下是四種實踐方式:

將大部分代碼放入函數或類中

請記住,Python解釋器在導入模塊時會執行模塊中的所有代碼。有時如果想要實現用戶可控的代碼,會導致一些副作用,例如:

在這種情況下,想要實現用戶控制觸發此代碼的執行,而不是讓Python解釋器在導入模塊時執行代碼。

因此,最佳方法是將大部分代碼包含在函數或類中。這是因為當Python解釋器遇到def或class關鍵字時,它只存儲這些定義供以後使用,並且在用戶通知之前不會實際執行。

將如下代碼保存在best_practices.py以證明這個想法:

在此代碼中,首先從time模塊中導入sleep()。

在這個示例中,參數以秒的形式傳入sleep()函數中,解釋器將暫停一段時間再運行。隨後,使用print()函數列印關於代碼描述的語句。

之後,定義一個process_data()函數,執行如下五項操作:

在命令行中執行

當你將此文件作為腳本用命令行執行時會發生什麼呢?

Python解釋器將執行函數定義之外的from time import sleep和print(),之後將創建函數process_data()。然後,腳本將退出而不做任何進一步的操作,因為腳本沒有任何執行process_data()的代碼。

如下是這段腳本的執行結果:

我們在這里看到的輸出是第一個print()的結果。注意,從time導入和定義process_data()函數不產生結果。具體來說,調用定義在process_data()內部的print()不會列印結果。

導入模塊或解釋器執行

在會話(或其他模塊)中導入此文件時,Python解釋器將執行相同的步驟。

Python解釋器導入文件後,您可以使用已導入模塊中定義的任何變數,類或函數。為了證明這一點,我們將使用可交互的Python解釋器。啟動解釋器,然後鍵入import best_practices:

導入best_practices.py後唯一的輸出來自process_data()函數外定義的print()。導入模塊或解釋器執行與基於命令行執行類似。

使用__name__控制代碼的執行

如何實現基於命令行而不使用Python解釋器導入文件來執行呢?

您可以使用__name__來決定執行上下文,並且當__name__等於"__main__"時才執行process_data()。在best_practices.py文件中添加如下代碼:

這段代碼添加了一個條件語句來檢驗__name__的值。當值為"__main__"時,條件為True。記住當__name__變數的特殊值為"__main__"時意味著Python解釋器會執行腳本而不是將其導入。

條件語塊內添加了四行代碼(第12,13,14和15行):

現在,在命令行中運行best_practices.py,並觀察輸出的變化:

首先,輸出顯示了process_data()函數外的print()的調用結果。

之後,data的值被列印。因為當Python解釋器將文件作為腳本執行時,變數__name__具有值"__main__",因此條件語句被計算為True。

接下來,腳本將調用process_data()並傳入data進行修改。當process_data執行時,將輸出一些狀態信息。最終,將輸出modified_data的值。

現在您可以驗證從解釋器(或其他模塊)導入best_practices.py後發生的事情了。如下示例演示了這種情況:

注意,當前結果與將條件語句添加到文件末尾之前相同。因為此時__name__變數的值為"best_practices",因此條件語句結果為False,Python將不執行process_data()。

創建名為main()的函數來包含要運行的代碼

現在,您可以編寫作為腳本由從命令行執行並導入且沒有副作用的Python代碼。接下來,您將學習如何編寫代碼並使其他程序員能輕松地理解其含義。

許多語言,如C,C++,Java以及其他的一些語言,都會定義一個叫做main()的函數,當編譯程序時,操作系統會自動調用該函數。此函數通常被稱為入口點(entry point),因為它是程序進入執行的起始位置。

相比之下,Python沒有一個特殊的函數作為腳本的入口點。實際上在Python中可以將入口點定義成任何名稱。

盡管Python不要求將函數命名為main(),但是最佳的做法是將入口點函數命名為main()。這樣方便其他程序員定位程序的起點。

此外,main()函數應該包含Python解釋器執行文件時要運行的任何代碼。這比將代碼放入條件語塊中更好,因為用戶可以在導入模塊時重復使用main()函數。

修改best_practices.py文件如下所示:

在這個示例中,定義了一個main()函數,它包含了上面的條件語句塊。之後修改條件語塊執行main()。如果您將此代碼作為腳本運行或導入,將獲得與上一節相同的輸出。

在main()中調用其他函數

另一種常見的實現方式是在main()中調用其他函數,而不是直接將代碼寫入main()。這樣做的好處在於可以實現將幾個獨立運行的子任務整合。

例如,某個腳本有如下功能:

如果在單獨的函數中各自實現這些子任務,您(或其他用戶)可以很容易地實現代碼重用。之後您可以在main()函數中創建默認的工作流。

您可以根據自己的情況選擇是否使用此方案。將任務拆分為多個函數會使重用更容易,但會增加他人理解代碼的難度。

修改best_practices.py文件如下所示:

在此示例代碼中,文件的前10行具有與之前相同的內容。第12行的第二個函數創建並返回一些示例數據,第17行的第三個函數模擬將修改後的數據寫入資料庫。

第21行定義了main()函數。在此示例中,對main()做出修改,它將調用數據讀取,數據處理以及數據寫入等功能。

首先,從read_data_from_web()中創建data。將data作為參數傳入process_data(),之後將返回modified_data。最後,將modified_data傳入write_data_to_database()。

腳本的最後兩行是條件語塊用於驗證__name__,並且如果if語句為True,則執行main()。

在命令行中運行如下所示:

根據執行結果,Python解釋器在執行main()函數時,將依次執行read_data_from_web(),process_data()以及write_data_to_database()。當然,您也可以導入best_practices.py文件並重用process_data()作為不同的數據輸入源,如下所示:

在此示例中,導入了best_practices並且將其簡寫為bp。

導入過程會導致Python解釋器執行best_practices.py的全部代碼,因此輸出顯示解釋文件用途的信息。

然後,從文件中存儲數據而不是從Web中讀取數據。之後,可以重用best_practices.py文件中的process_data()和write_data_to_database()函數。在此情況下,可以利用代碼重寫來取代在main()函數中實現全部的代碼邏輯。

實踐總結

以下是Python中main()函數的四個關鍵最佳實踐:

結論

恭喜!您現在已經了解如何創建Python main()函數了。

本文介紹了如下內容:

現在,您可以開始編寫一些非常棒的關於Python main()函數代碼啦!

⑽ Python3基礎

默認情況下,Python 3 源碼文件以 UTF-8 編碼,所有字元串都是 unicode 字元串。 當然你也可以為源碼文件指定不同的編碼:

在 Python 3 中,非 ASCII 標識符也是允許的了。

保留字即關鍵字,我們不能把它們用作任何標識符名稱。Python 的標准庫提供了一個 keyword 模塊,可以輸出當前版本的所有關鍵字:

Python中單行注釋以 # 開頭,實例如下:

執行以上代碼,輸出結果為:

多行注釋可以用多個 # 號,還有 ''' 和 """:

執行以上代碼,輸出結果為:

python最具特色的就是使用縮進來表示代碼塊,不需要使用大括弧 {} 。

縮進的空格數是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數。實例如下:

以下代碼最後一行語句縮進數的空格數不一致,會導致運行錯誤:

以上程序由於縮進不一致,執行後會出現類似以下錯誤:

Python 通常是一行寫完一條語句,但如果語句很長,我們可以使用反斜杠()來實現多行語句,例如:

在 [], {}, 或 () 中的多行語句,不需要使用反斜杠(),例如:

python中數字有四種類型:整數、布爾型、浮點數和復數。

實例

輸出結果為:

函數之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。

空行與代碼縮進不同,空行並不是Python語法的一部分。書寫時不插入空行,Python解釋器運行也不會出錯。但是空行的作用在於分隔兩段不同功能或含義的代碼,便於日後代碼的維護或重構。

記住: 空行也是程序代碼的一部分。

執行下面的程序在按回車鍵後就會等待用戶輸入:

以上代碼中 ," "在結果輸出前會輸出兩個新的空行。一旦用戶按下 enter 鍵時,程序將退出。

Python可以在同一行中使用多條語句,語句之間使用分號(;)分割,以下是一個簡單的實例:

執行以上代碼,輸出結果為:

縮進相同的一組語句構成一個代碼塊,我們稱之代碼組。

像if、while、def和class這樣的復合語句,首行以關鍵字開始,以冒號( : )結束,該行之後的一行或多行代碼構成代碼組。

我們將首行及後面的代碼組稱為一個子句(clause)。

如下實例:

print 默認輸出是換行的,如果要實現不換行需要在變數末尾加上 end=""

以上實例執行結果為:

在 python 用 import 或者 from...import 來導入相應的模塊。

將整個模塊(somemole)導入,格式為: import somemole

從某個模塊中導入某個函數,格式為: from somemole import somefunction

從某個模塊中導入多個函數,格式為: from somemole import firstfunc, secondfunc, thirdfunc

將某個模塊中的全部函數導入,格式為: from somemole import *

import sys print ( ' ================Python import mode========================== ' ) ; print ( ' 命令行參數為: ' ) for i in sys . argv : print ( i ) print ( ' python 路徑為 ' , sys . path )

from sys import argv , path # 導入特定的成員 print ( ' ================python from import=================================== ' ) print ( ' path: ' , path ) # 因為已經導入path成員,所以此處引用時不需要加sys.path

很多程序可以執行一些操作來查看一些基本信息,Python可以使用-h參數查看各參數幫助信息:

閱讀全文

與python程序入口參數相關的資料

熱點內容
addto新建文件夾什麼意思 瀏覽:158
有伺服器地址怎麼安裝軟體 瀏覽:659
安卓如何完全清除數據 瀏覽:690
安卓安卓證書怎麼信任 瀏覽:53
伺服器被攻擊如何解決 瀏覽:221
學霸變成程序員 瀏覽:881
c語言編譯錯誤fatalerror 瀏覽:441
ipv4內部伺服器地址怎麼分配 瀏覽:463
java線程安全的方法 瀏覽:950
重復命令畫梯形 瀏覽:164
在疫情就是命令 瀏覽:328
自己搭建一個什麼伺服器好玩 瀏覽:253
java基礎馬士兵 瀏覽:823
完美世界手游如何查看伺服器 瀏覽:859
光遇安卓與ios什麼時候互通 瀏覽:598
js如何運行時編譯 瀏覽:917
引力app在哪裡下載 瀏覽:609
編寫app如何得到錢 瀏覽:801
吉利汽車軟體放哪個文件夾安裝 瀏覽:223
多文件編譯c 瀏覽:543