日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

python局部静态变量_全局变量、局部变量和静态变量

發(fā)布時(shí)間:2023/12/20 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python局部静态变量_全局变量、局部变量和静态变量 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

全局變量和局部變量在寫代碼時(shí)需要區(qū)分清楚,不然會(huì)出大問題。不同語言定義不同范圍的變量的寫法有很大的區(qū)別。

那么靜態(tài)變量是在什么場(chǎng)景下用到呢?我們來假設(shè)這樣一個(gè)場(chǎng)景:在函數(shù)內(nèi)部定義的變量,當(dāng)程序執(zhí)行到它的定義處時(shí),編譯器為它在棧上分配空間,函數(shù)在棧上分配的空間在此函數(shù)執(zhí)行結(jié)束時(shí)會(huì)釋放掉,這樣就產(chǎn)生了一個(gè)問題: 如果想將函數(shù)中此變量的值保存至下一次調(diào)用時(shí),如何實(shí)現(xiàn)? 最容易想到的方法是定義為全局的變量,但定義一個(gè)全局變量有許多缺點(diǎn),最明顯的缺點(diǎn)是破壞了此變量的訪問范圍(使得在此函數(shù)中定義的變量,不僅僅只受此函數(shù)控制)。static關(guān)鍵字則可以很好的解決這個(gè)問題。另外,在C++和java中,需要一個(gè)數(shù)據(jù)對(duì)象為整個(gè)類而非某個(gè)對(duì)象服務(wù),同時(shí)又力求不破壞類的封裝性,即要求此成員隱藏在類的內(nèi)部,對(duì)外不可見時(shí),可將其定義為靜態(tài)數(shù)據(jù)。

在c中,靜態(tài)全局變量和全局變量的區(qū)別在于,全局變量其他文件可以訪問,但是靜態(tài)全局變量只能被當(dāng)前文件中的函數(shù)訪問。

c/c++的寫法

int globalVar = 1; //全局變量static int staticVar = 2; //靜態(tài)全局變量

void VarDemo() {

int localVar = 3; //局部變量 static int staticVar2 = 4; //仍然為局部變量 printf("globalVar=%d\n" + globalVar);

printf("staticVar=%d\n" + staticVar);

printf("localVar=%d\n" + localVar);

}

java的寫法

class HelloWorld{

public int globalVar = 1;

public static int staticVar = 2;

public static void main(String[] args) {

int localVar = 3;

System.out.println("localVar="+String.valueOf(localVar));

System.out.println("staticVar="+String.valueOf(staticVar));

}

}

go的寫法

var globalVar int=0 //只能被本包內(nèi)函數(shù)訪問的全局變量var GlobalVar int = 1 //可以在任何包內(nèi)被訪問的全局變量

func varDemo() {

localVar := 2 //局部變量fmt.Println("globalVar=", globalVar)

fmt.Println("GlobalVar=", GlobalVar)

fmt.Println("localVar=", localVar)

}

func main() {

varDemo()

}

python的寫法

global_var = 1 # 定義全局變量

def var_demo():

local_var = 2 # 定義局部變量

print("global_var=", global_var)

print("local_var=", local_var)

if __name__ == "__main__":

var_demo()

總結(jié)對(duì)比:

1. 一般情況下全局變量定義函數(shù)外,局部變量定義函數(shù)內(nèi);全局變量作用范圍是全局,局部變量作用范圍在函數(shù)內(nèi);

2. 靜態(tài)變量定義在函數(shù)外,則為靜態(tài)全局變量,作用范圍為當(dāng)前文件;定義在函數(shù)內(nèi),則為局部靜態(tài)變量,作用范圍同局部變量;

3. 如果在全局范圍要經(jīng)常用到某個(gè)值,則設(shè)置為靜態(tài)變量,否則定義為普通全局變量即可;

4. c、c++和java可以定義靜態(tài)變量,go和python不能定義靜態(tài)變量;

5. go的全局變量有兩種,一種是可以在包內(nèi)被訪問的,一種是在其他包內(nèi)也可以被訪問的,區(qū)別在于后一種全局變量的首字母為答謝,前一種為小寫;

總結(jié)

以上是生活随笔為你收集整理的python局部静态变量_全局变量、局部变量和静态变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。