簡體   English   中英

如何告訴 Python 從給定的行開始執行代碼

[英]How to tell Python to start executing code from a given line

我對 Python 完全陌生,目前只是在學習字符串和變量。 我知道你可以在代碼前加上一個“#”來注釋它,但是 Python 是否有一個選項可以完全忽略部分代碼並從這段代碼之后的行開始工作?

例如:

old_price = 30
new_price = 25
difference = old_price - new_price

name = "John Smith"
age = 15
print(name, age)

我希望代碼從行名稱 =“John Smith”開始工作,而不必注釋前 3 行。

您可以使用多行字符串來注釋整個塊,而不必在每一行中添加 #:

"""
old_price = 30
new_price = 25
difference = old_price - new_price
"""
name = "John Smith"
age = 15
print(name, age)

您可以定義一個函數並調用它:

# define function old()
def old():
    old_price = 30
    new_price = 25
    difference = old_price - new_price
    print (difference)

# define function string()
def string():
    name = "John Smith"
    age = 15
    print (name, age) 

string() # out: John Smith 15

我不相信有,而且我不認為這樣做實際上是一個好主意。 為什么會有不想執行的代碼?

如果您還不想執行它,您可以將代碼放入一個函數中而不是調用它。

如果你只是在試驗並想玩玩,你應該考慮像 IPython 或 Jupyter Notebook 這樣的東西,你可以在其中交互式地執行代碼

Python 是一種結構化的編程語言,因此不鼓勵此類事情並且內部不支持(就像goto指令一樣)。 此外,通常第一行代碼將是稍后需要的導入語句,因此您真的不想跳過它們。

您應該利用結構化語言的優勢並將代碼放入函數中,然后您可以稍后決定是否要執行這些函數。 另一種解決方案是對您當前不想執行的代碼或其他不包含代碼的文本行使用注釋(或塊注釋)。


然而,只是為了好玩,這里有兩種跳過行的方法。

使用 -x 標志

您可以使用 -x 標志運行您的程序: python -x <python_file> 這只會跳過第一行。 此標志用於允許 #!cmd 的非 Unix 形式(如運行python -h )。

使用另一個腳本來運行你的腳本

Python 沒有從給定的行運行的內部支持,所以讓我們作弊。 我們可以創建一個腳本文件,它的唯一目的是從給定的行執行另一個文件。 在這個例子中,我實現了三種方法(注意exec命令是不好的,你不應該真正使用它)。

import os
import subprocess
import sys
import tempfile

skip_to = int(sys.argv[1])
file_path = sys.argv[2]

with open(file_path, 'r') as sourcefile:
    new_source = '\n'.join(sourcefile.readlines()[skip_to:])

    # Several ways to execute:

    # 1. Create tempfile and use subprocess
    temp = tempfile.NamedTemporaryFile(mode='w+', delete=False)
    temp.write(new_source)
    temp.close()
    subprocess.call(['python', temp.name] + sys.argv[2:])
    os.remove(temp.name)

    # 2. Run from memory using subprocess and python -c
    subprocess.call(['python', '-c', new_source] + sys.argv[2:])

    # 3. Using exec (usually a very bad idea...)
    exec(new_source)

要跳過的示例代碼:

print("first line")
print("second line")
print("third line")
from datetime import datetime

print(datetime.now())
>>python skip.py 3 main.py
>>2019-12-05 20:50:50.759259
>>2019-12-05 20:50:50.795159
>>2019-12-05 20:50:50.800118

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM