首先我們先看一段**
<?php
$a = 1 ; /* global scope */
function test ()
test ();
?>
這個指令碼不會有任何輸出,因為 echo 語句引用了乙個區域性版本的變數 $a ,而且在這個範圍內,它並沒有被賦值。你可能注意到 php 的全域性變數和 c 語言有一點點不同,在 c 語言中,全域性變數在函式中自動生效,除非被區域性變數覆蓋。這可能引起一些問題,有些人可能不小心就改變了乙個全域性變數。php 中全域性變數在函式中使用時必須宣告為 global。
global 關鍵字
首先,乙個使用 global 的例子,**如下:
<?php
$a = 1 ;
$b = 2 ;
function sum ()
sum ();
echo $b ;
?>
以上指令碼的輸出將是「3」。在函式中宣告了全域性變數 $a 和 $b 之後,對任一變數的所有引用都會指向其全域性版本。對於乙個函式能夠宣告的全域性變數的最大個數,php 沒有限制。
在全域性範圍內訪問變數的第二個辦法,是用特殊的 php 自定義 $globals 陣列。前面的例子可以寫成:
example #2 使用 $globals 替代 global,**如下:
<?php
$a = 1 ;
$b = 2 ;
function sum ()
sum ();
echo $b ;
?>
$globals 是乙個關聯陣列,每乙個變數為乙個元素,鍵名對應變數名,值對應變數的內容。 $globals 之所以在全域性範圍內存在,是因為 $globals 是乙個超全域性變數。以下範例顯示了超全域性變數的用處:
example #3 演示超全域性變數和作用域的例子
<?php
function test_global ()
?>
static關鍵字 和 global
類內部 宣告靜態成員,可以使用修飾符public protected private 訪問靜態屬性用 self 或 static 關鍵字 靜態變數屬於整個類 靜態函式內部沒有this指標,只能訪問靜態變數和靜態函式 類外部 靜態成員不需要例項化物件就可以訪問,類名 靜態成員名 子類繼承父類 子類訪問...
global和 nonlocal關鍵字
例如 def handu global a 利用外邊的a執行函式 a 10 print 函式內部 a a 20 handu print 外部函式 a 結果 函式內部 30 函式外部 30 開始分析 global關鍵字可以將區域性變數變成乙個全域性變數所以都是30 30 def hanfu globa...
nonlocal和global關鍵字
1.python的函式的概述 函式定義 函式呼叫 2.python函式中引數的型別和返回值 形參和實參 形參型別 普通引數 實參的傳遞的順序和個數和形參一直 關鍵字引數 指定傳遞的實參被特定形參接收 預設引數 形參中設定當前引數的預設值 可以不傳遞設定了預設引數的實參 不定長引數 乙個形參能夠接收任...