欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、什么是代碼的縮進(jìn)

大家在學(xué)習(xí)編程時(shí),是愿意看到下面范例中的A范例代碼還是B范例代碼呢?

答案應(yīng)該是一致的,大家肯定都喜歡閱讀B范例的代碼,因?yàn)樗瓷先ジ右?guī)整,這是一種最基本的代碼編寫規(guī)范。

A、縮進(jìn)格式不好的范例

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

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

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

我們再來看看其他編程語言的縮進(jìn)例子:

例如我想輸出下面這幾行內(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.
這與你受到的打擊有多大無關(guān),
這一切都取決于你是否能在打擊后繼續(xù)前進(jìn)。
---------逆境清醒

用C語言實(shí)現(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("這與你受到的打擊有多大無關(guān),\n");
   printf("這一切都取決于你是否能在打擊后繼續(xù)前進(jìn)。\n");
   printf("---------逆境清醒\n");
   return 0;
}

用c#語言實(shí)現(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("這與你受到的打擊有多大無關(guān),");
         Console.WriteLine("這一切都取決于你是否能在打擊后繼續(xù)前進(jìn)。");
         Console.WriteLine("---------逆境清醒"); 
         Console.ReadKey();
      }
   }
}

用Java語言實(shí)現(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("這與你受到的打擊有多大無關(guān),");
       System.out.println("這一切都取決于你是否能在打擊后繼續(xù)前進(jìn)。");
       System.out.println("---------逆境清醒");
    }
}

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

代碼縮進(jìn):

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

我們可以通過縮進(jìn),表示邏輯上的從屬關(guān)系;還可以通過保持統(tǒng)一的縮進(jìn)風(fē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("心中有愛,可以溫柔歲月,也可不負(fù)相遇。");
		}
	}
}

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

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

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

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

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

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

python 中這個(gè)縮進(jìn)卻是非常重要的,它決定了你的語法是否正確。縮進(jìn)量不同導(dǎo)致的SyntaxError錯(cuò)誤。

2.1、縮進(jìn)的實(shí)現(xiàn)方式

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

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

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

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

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

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

       ♦  Python 3中不允許混合使用Tab和空格縮進(jìn)。

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

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

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

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

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

  縮進(jìn)不能用反斜杠進(jìn)行多行拼接;

  首個(gè)反斜杠之前的空白符決定了縮進(jìn)的層次。

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

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

2.1、Python行的縮進(jìn)

Python行的縮進(jìn)是針對邏輯行的。

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

2.1.1、物理行

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

以下代碼代碼一共有7行,即有7個(gè)物理行。

#!/usr/bin/python
njstr1="人的一生會(huì)遇到兩個(gè)人,"
njstr2="一個(gè)驚艷了時(shí)光,"
njstr3="一個(gè)溫柔了歲月。"


print(njstr1,njstr2,njstr3)

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

人的一生會(huì)遇到兩個(gè)人, 一個(gè)驚艷了時(shí)光, 一個(gè)溫柔了歲月。 

2.1.2、邏輯行

代碼:

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

無論是寫成怎樣的縮進(jìn)格式,例如下圖:

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

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

 {'njstr1': '人的一生會(huì)遇到兩個(gè)人', 'njstr2': '一個(gè)驚艷了時(shí)光', 'njstr3': '一個(gè)溫柔了歲月'}

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

python代碼中

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

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

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)上的右大括號(hào)/方括號(hào)/括號(hào)可以在列表最后一行的第一個(gè)非空白字符下對齊,如下所示
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)的行的第一個(gè)字符下,(右括號(hào)回退),如下所示:
my_list = [
    1, 2, 3,
    4, 5, 6,
]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
)

行首含換頁符時(shí),縮進(jìn)計(jì)算將忽略該換頁符。

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

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

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

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

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

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

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

2.2、使用垂直對齊

使用垂直對齊縮進(jìn)的正確使用方法:

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

2.3、使用額外的縮進(jìn)級(jí)別

使用額外的縮進(jìn)級(jí)別形式,

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

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

2.4、使用懸掛縮進(jìn)

每個(gè)縮進(jìn)級(jí)別使用 4 個(gè)空格。

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

使用懸掛縮進(jìn)時(shí),應(yīng)考慮以下因素:

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

2.5、不推薦的錯(cuò)誤縮進(jìn)寫法

# 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.
# 縮進(jìn)不夠就不容易清晰地看出來函數(shù)名和參數(shù)的區(qū)別。
def long_function_name(
    var_one, var_two, var_three,
    var_four):
    print(var_one)

2.6、掛行縮進(jìn)不一定要用4個(gè)空格

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

可選:

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


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

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

 下面的例子縮進(jìn)不一致,會(huì)導(dǎo)致運(yùn)行錯(cuò)誤:

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

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

#下面的 Python 代碼縮進(jìn)示例雖然正確,但含混不清:
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

下例展示了多種縮進(jìn)錯(cuò)誤:

#下例展示了多種縮進(jìn)錯(cuò)誤:

 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

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

#下例展示了if語句縮進(jìn)使用方法:

# No extra indentation.
# 沒有額外的縮進(jìn)
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.
# 增加一個(gè)注釋,在能提供語法高亮的編輯器中可以有一些區(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.
# 在條件判斷的語句添加額外的縮進(jìn)
if (this_is_one_thing
        and that_is_another_thing):
    do_something()

三、參考資料:

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

總結(jié)

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

相關(guān)文章

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

    python繪圖pyecharts+pandas的使用詳解

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論