亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python代碼中的縮進規(guī)則詳細解釋(史上最全)

 更新時間:2025年05月28日 09:15:27   作者:逆境清醒  
這篇文章主要介紹了代碼縮進的重要性以及在Python語言中的具體規(guī)則,代碼縮進有助于提高代碼的可讀性和整潔性,并且是Python語言中一個強制性的語法要求,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

一、什么是代碼的縮進

大家在學習編程時,是愿意看到下面范例中的A范例代碼還是B范例代碼呢?

答案應該是一致的,大家肯定都喜歡閱讀B范例的代碼,因為它看上去更加規(guī)整,這是一種最基本的代碼編寫規(guī)范。

A、縮進格式不好的范例

public class HelloWorld {
public static void main(String []args) {
System.out.println("Adversity Awake!");
}
}
B、縮進好的范例

public class HelloWorld {
    public static void main(String []args) {
       System.out.println("Adversity Awake!");
    }
}

B范例的代碼使用了較好的代碼縮進規(guī)范,層次清楚,可讀性強,所以我們會喜歡這種代碼編寫風格。

我們再來看看其他編程語言的縮進例子:

例如我想輸出下面這幾行內(nèi)容:

It has nothing to do with how hard you've been hit,
It's all about whether you can push on after the blow.
這與你受到的打擊有多大無關,
這一切都取決于你是否能在打擊后繼續(xù)前進。
---------逆境清醒

用C語言實現(xiàn):

C語言:
#include <stdio.h>
int main()
{
   printf("It has nothing to do with how hard you've been hit,\n");
   printf("It's all about whether you can push on after the blow.\n");
   printf("這與你受到的打擊有多大無關,\n");
   printf("這一切都取決于你是否能在打擊后繼續(xù)前進。\n");
   printf("---------逆境清醒\n");
   return 0;
}

用c#語言實現(xiàn):

using System;
namespace njqxSayApplication
{
   class njqx
   {
      static void Main(string[] args)
      {
         Console.WriteLine("It has nothing to do with how hard you've been hit,");
         Console.WriteLine("It's all about whether you can push on after the blow.");
         Console.WriteLine("這與你受到的打擊有多大無關,");
         Console.WriteLine("這一切都取決于你是否能在打擊后繼續(xù)前進。");
         Console.WriteLine("---------逆境清醒"); 
         Console.ReadKey();
      }
   }
}

用Java語言實現(xiàn)

public class njqx {
    public static void main(String []args) {
       System.out.println("It has nothing to do with how hard you've been hit,");
       System.out.println("It's all about whether you can push on after the blow.");
       System.out.println("這與你受到的打擊有多大無關,");
       System.out.println("這一切都取決于你是否能在打擊后繼續(xù)前進。");
       System.out.println("---------逆境清醒");
    }
}

由此,我們可以總結(jié)出什么是代碼的縮進:

代碼縮進:

  縮進指的是代碼行開縮進頭處的空格,縮進(indent)是用來表示邏輯上的從屬關系的,它有助于讀者更好地理解文章、代碼。在有些編程語言中,使用縮進僅僅是為了提高可讀性。

我們可以通過縮進,表示邏輯上的從屬關系;還可以通過保持統(tǒng)一的縮進風格,避免寫出歪歪扭扭的垃圾代碼,提高代碼的整潔性和可讀性。

public class Njqxexam {
	public static void main(String[] args) {
		boolean condition = true;
		System.out.println("逆境清醒希望你們無論條件真假都能做到:");
		if (condition) {
			System.out.println("眼里有光,可以照亮自己,也能溫暖他人;");
		} else {
			System.out.println("心中有愛,可以溫柔歲月,也可不負相遇。");
		}
	}
}

常用的統(tǒng)一進方法是:

如果語句B從屬于語句A, 那么語句B的開頭,就跟語句A的開頭保持某個固定距離L(如1個TAB距離或4個空格的距離或某個規(guī)定好的距離);

如果語句C從屬于語句B, 那么語句C的開頭,就跟語句B的開頭保持某個固定距離L(如1個TAB距離或4個空格的距離或某個規(guī)定好的距離);那么語句C就跟A的開頭就會保持距離2 * L(即2*1個TAB或者2*4=8個空格的距離或2*某個規(guī)定好的距離);

二、Python語言的縮進規(guī)則

Python不像其他程序設計語言采用大括號“{}”分隔代碼塊,而是采用代碼縮進和冒號“:”區(qū)分代碼之間的層次。

Python對代碼的縮進要求非常嚴格,同一個python程序文件中,同一個級別的代碼塊的縮進量必須相同。如果不采用合理的代碼縮進,系統(tǒng)編譯時將拋出SyntaxError異常。例,代碼中有的縮進量是4個空格,有的縮進量是3個空格,系統(tǒng)就會出現(xiàn)SyntaxError錯誤。

python 中這個縮進卻是非常重要的,它決定了你的語法是否正確。縮進量不同導致的SyntaxError錯誤。

2.1、縮進的實現(xiàn)方式

遵循一定的代碼編寫規(guī)則和命名規(guī)范可以使代碼更加規(guī)范化,對代碼的理解與維護起到至關重要的作用。

Python 在語法上使用縮進來確定代碼塊的開始和結(jié)束,對于每一級縮進,都應該是 4個空格。在 Pycharm等python編輯工具中,我們可以設置使用 tab 鍵來進行縮進。

Python語言的縮進的實現(xiàn)方式:

       ♦  縮進可以使用空格或者Tab鍵實現(xiàn)。

       ♦  縮進本身是強制性的,但是空格數(shù)量實際上語法并沒有做限制。只不過同級代碼縮進空格一致即可。

       ♦  一般我們都是以 4個空格(即一個tab鍵) 來進行使用。

       ♦  Python 3中不允許混合使用Tab和空格縮進。

  空格和tab符通常都以空白形式顯示。如果混用,代碼容易意混淆,增加維護及調(diào)試的困難、降低代碼易讀性,因此 Python PEP8 編碼規(guī)范,指導使用4個空格作為縮進。

在Python中,對于類定義、函數(shù)定義、流程控制語句,以及異常處理語句等,行尾的冒號和下一行的縮進表示一個代碼塊的開始,而縮進結(jié)束,則表示一個代碼塊的結(jié)束。

  邏輯行開頭的空白符(空格符和制表符)用于計算該行的縮進層級,決定語句組塊。

  制表符(從左至右)被替換為一至八個空格,縮進空格的總數(shù)是八的倍數(shù)(與 Unix 的規(guī)則保持一致)。

  首個非空字符前的空格數(shù)決定了該行的縮進層次。

  縮進不能用反斜杠進行多行拼接;

  首個反斜杠之前的空白符決定了縮進的層次。

  源文件混用制表符和空格符縮進時,因空格數(shù)量與制表符相關,由此產(chǎn)生的不一致將導致不能正常識別縮 進層次,從而觸發(fā) TabError。

跨平臺兼容性說明: 鑒于非 UNIX 平臺文本編輯器本身的特性,請勿在源文件中混用制表符和空格符。另外也請注意,不同平臺有可能會顯式限制最大縮進層級。

2.1、Python行的縮進

Python行的縮進是針對邏輯行的。

所以,判斷縮進是否正確,首先要區(qū)分物理行和邏輯行。

2.1.1、物理行

物理行:代碼編輯器中顯示的代碼,每一行內(nèi)容是一個物理行。包括空行。

以下代碼代碼一共有7行,即有7個物理行。

#!/usr/bin/python
njstr1="人的一生會遇到兩個人,"
njstr2="一個驚艷了時光,"
njstr3="一個溫柔了歲月。"


print(njstr1,njstr2,njstr3)

代碼運行后輸出結(jié)果: 

人的一生會遇到兩個人, 一個驚艷了時光, 一個溫柔了歲月。 

2.1.2、邏輯行

代碼:

jiang={
    "njstr1":"人的一生會遇到兩個人",
    "njstr2":"一個驚艷了時光",
    "njstr3":"一個溫柔了歲月"}
print(jiang)

無論是寫成怎樣的縮進格式,例如下圖:

邏輯行:這個語句,雖然書寫為多行,但解釋器進行解釋時,只當成一個語句處理,即一個邏輯行。所以,無論分開的其他行怎么縮進,都不會影響程序運行結(jié)果。

最后代碼運行后輸出的結(jié)果都是同樣的: 

 {'njstr1': '人的一生會遇到兩個人', 'njstr2': '一個驚艷了時光', 'njstr3': '一個溫柔了歲月'}

2.1.3、物理行邏輯行縮進方法總結(jié)

python代碼中

1、可以使用";"號將兩個或多個邏輯行合并成一個物理行。
2、兩個物理行可以通過使用"\"號連接。
3、字典、列表等變量賦值語句,是可以直接書寫為多個物理行的。
4、導入模塊的邏輯行的“首行”需要頂格書寫,即無任何縮進
5、相同邏輯層應該保持相同的縮進
6、":"標記代表一個新的邏輯層, 這時增加縮進的:代表進入下一個級別的代碼層,減少縮進:代表返回上一個級別的代碼層

7、多行結(jié)構(gòu)上的右大括號/方括號/括號可以在列表最后一行的第一個非空白字符下對齊,或者它可能排在開始 Multiline 結(jié)構(gòu)的行的第一個字符下

The closing brace/bracket/parenthesis on multiline constructs may either line up under the first non-whitespace character of the last line of list, as in:
多行結(jié)構(gòu)上的右大括號/方括號/括號可以在列表最后一行的第一個非空白字符下對齊,如下所示
my_list = [
    1, 2, 3,
    4, 5, 6,
    ]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
    )

or it may be lined up under the first character of the line that starts the multiline construct, as in:
或者它可能排在開始 Multiline 結(jié)構(gòu)的行的第一個字符下,(右括號回退),如下所示:
my_list = [
    1, 2, 3,
    4, 5, 6,
]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
)

行首含換頁符時,縮進計算將忽略該換頁符。

換頁符在行首空白符內(nèi)其他位置的效果未定義(例如,可能導致空格計數(shù)重置為零)。

連續(xù)行的縮進層級以堆棧形式生成 INDENT 和 DEDENT 形符,說明如下:

讀取文件第一行前,先向棧推入一個零值,該零值不會被移除。

推入棧的層級值從底至頂持續(xù)增加。

每個邏輯行開頭的行縮進層級將與棧頂行比較。如果相等,則不做處理。如果新行層級較高,則會被推入棧頂,并生成一個 INDENT 形符。如果新行層級較低,則 應當 是棧中的層級數(shù)值之一;棧中高于該層級的所有數(shù)值都將被移除,每移除一級數(shù)值生成一個 DEDENT 形符。文件末尾,棧中剩余的每個大于零的數(shù)值生成一個 DEDENT 形符。

python使用縮進來表示代碼塊 。縮進的空格數(shù)是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數(shù)。

當語句的條件部分足夠長,需要跨多行書寫時,值得注意的是,兩個字符的關鍵字(即 )加上一個空格和一個左括號的組合會為多行條件語句的后續(xù)行創(chuàng)建一個自然的 4 個空格縮進。這可能會與嵌套在語句內(nèi)的縮進代碼套件產(chǎn)生視覺沖突,該代碼也會自然縮進到 4 個空格。此 PEP 對于如何(或是否)進一步在視覺上將此類條件行與語句內(nèi)的嵌套套件區(qū)分開來,沒有明確立場。在這種情況下,可接受的選項包括但不限于:ifififif

2.2、使用垂直對齊

使用垂直對齊縮進的正確使用方法:

# “垂直對齊”
# Aligned with opening delimiter.
# 和開頭的分隔符對齊。
# 與左括號對齊
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

2.3、使用額外的縮進級別

使用額外的縮進級別形式,

方法:添加 4 個空格(額外的縮進級別)以區(qū)分參數(shù)和其他參數(shù)。

# Add 4 spaces (an extra level of indentation) to distinguish arguments from the rest.
# 添加 4 個空格(額外的縮進級別)以區(qū)分參數(shù)和其他參數(shù)。
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

2.4、使用懸掛縮進

每個縮進級別使用 4 個空格。

連續(xù)行應使用 Python 的括號、方括號和大括號內(nèi)的隱式行連接垂直對齊包裝的元素,或使用懸掛縮進。

使用懸掛縮進時,應考慮以下因素:

  • 第一行不應有參數(shù),
  • 并且應使用進一步的縮進以清楚地區(qū)分自己作為連續(xù)行:
# Hanging indents should add a level.
# 懸掛縮進應增加一個級別。
foo = long_function_name(
    var_one, var_two,
    var_three, var_four)

2.5、不推薦的錯誤縮進寫法

# Wrong:
# 不好的寫法:
# Arguments on first line forbidden when not using vertical alignment.
# 如果不用垂直對齊(上面推薦的寫法的第一種),就不要在第一行放參數(shù)。
foo = long_function_name(var_one, var_two,
    var_three, var_four)

# Wrong:
# 不好的寫法:
# Further indentation required as indentation is not distinguishable.
# 縮進不夠就不容易清晰地看出來函數(shù)名和參數(shù)的區(qū)別。
def long_function_name(
    var_one, var_two, var_three,
    var_four):
    print(var_one)

2.6、掛行縮進不一定要用4個空格

四空格的規(guī)則對于續(xù)行是可選的。

可選:

# 掛行縮進不一定要用4個空格
foo = long_function_name(
  var_one, var_two,
  var_three, var_four)


2.7、if、for等循環(huán)語句的縮進

#正確的使用方式:
if True:
    print ("今天天晴很好,陽光明媚!")
else:
    print ("今天陰天。。。")

 下面的例子縮進不一致,會導致運行錯誤:

#代碼最后一行語句縮進數(shù)的空格數(shù)不一致,會導致運行錯誤:
if True:
    print ("今天天晴很好,陽光明媚!")
else:
      print ("今天陰天。。。")  # 縮進不一致,會導致運行錯誤  

下面的 Python 代碼縮進示例雖然正確,但含混不清:

#下面的 Python 代碼縮進示例雖然正確,但含混不清:
def perm(l):
        # Compute the list of all permutations of l
    if len(l) <= 1:
                  return [l]
    r = []
    for i in range(len(l)):
             s = l[:i] + l[i+1:]
             p = perm(s)
             for x in p:
              r.append(l[i:i+1] + x)
    return r

下例展示了多種縮進錯誤:

#下例展示了多種縮進錯誤:

 def perm(l):                       # error: first line indented
for i in range(len(l)):             # error: not indented
    s = l[:i] + l[i+1:]
        p = perm(l[:i] + l[i+1:])   # error: unexpected indent
        for x in p:
                r.append(l[i:i+1] + x)
            return r                # error: inconsistent dedent

當if語句的條件部分長到需要換行寫的時候,注意可以在兩個字符關鍵字的連接處(比如if),增加一個空格,再增加一個左括號來創(chuàng)造一個4空格縮進的多行條件。這會與if語句內(nèi)同樣使用4空格縮進的代碼產(chǎn)生視覺沖突。PEP沒有明確指明要如何區(qū)分i發(fā)的條件代碼和內(nèi)嵌代碼??墒褂玫倪x項包括但不限于下面幾種情況:

#下例展示了if語句縮進使用方法:

# No extra indentation.
# 沒有額外的縮進
if (this_is_one_thing and
    that_is_another_thing):
    do_something()


# Add a comment, which will provide some distinction in editors
# supporting syntax highlighting.
# 增加一個注釋,在能提供語法高亮的編輯器中可以有一些區(qū)分
if (this_is_one_thing and
    that_is_another_thing):
    # Since both conditions are true, we can frobnicate.
    do_something()


# Add some extra indentation on the conditional continuation line.
# 在條件判斷的語句添加額外的縮進
if (this_is_one_thing
        and that_is_another_thing):
    do_something()

三、參考資料:

https://peps.python.org/pep-0008/

總結(jié)

到此這篇關于python代碼中的縮進規(guī)則詳細解釋的文章就介紹到這了,更多相關python代碼縮進規(guī)則內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python繪圖pyecharts+pandas的使用詳解

    python繪圖pyecharts+pandas的使用詳解

    這篇文章主要介紹了python繪圖pyecharts+pandas的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • python 數(shù)據(jù)提取及拆分的實現(xiàn)代碼

    python 數(shù)據(jù)提取及拆分的實現(xiàn)代碼

    這篇文章主要介紹了python 數(shù)據(jù)提取及拆分的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 用C++封裝MySQL的API的教程

    用C++封裝MySQL的API的教程

    這篇文章主要介紹了用C++封裝MySQL的API的教程,包括對語句拼裝器SQLJoin的介紹,需要的朋友可以參考下
    2015-05-05
  • Tensorflow實現(xiàn)多GPU并行方式

    Tensorflow實現(xiàn)多GPU并行方式

    今天小編就為大家分享一篇Tensorflow實現(xiàn)多GPU并行方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python數(shù)學建模之三大模型與十大常用算法詳情

    python數(shù)學建模之三大模型與十大常用算法詳情

    這篇文章主要介紹了python數(shù)學建模之三大模型與十大常用算法詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感想取得小伙伴可以參考一下
    2022-07-07
  • python畫圖中文不顯示問題的解決方法

    python畫圖中文不顯示問題的解決方法

    python中繪圖時如果標簽或者標題是中文,最后繪出來的圖中的文字會被方框替代,下面這篇文章主要給大家介紹了關于python畫圖中文不顯示問題的解決方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • 詳解flask表單提交的兩種方式

    詳解flask表單提交的兩種方式

    這篇文章主要介紹了詳解flask表單提交的兩種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Python3.7 pyodbc完美配置訪問access數(shù)據(jù)庫

    Python3.7 pyodbc完美配置訪問access數(shù)據(jù)庫

    最近小編需要學習python連接access數(shù)據(jù)庫,發(fā)現(xiàn)很多朋友推薦pyodbc,那么這篇文章就先為大家介紹一下Python3.7下pyodbc的配置方法
    2019-10-10
  • python實現(xiàn)畫圓功能

    python實現(xiàn)畫圓功能

    這篇文章主要為大家詳細介紹了python實現(xiàn)畫圓功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • numpy中的掩碼數(shù)組的使用

    numpy中的掩碼數(shù)組的使用

    本文主要介紹了numpy中的掩碼數(shù)組的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02

最新評論