程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> python返回值與局部全局變量

python返回值與局部全局變量

編輯:Python
Python 2.7.10 (default, Oct 14 2015, 16:09:02) 
[GCC 5.2.1 20151010] on linux2
Type "copyright", "credits" or "license()" for more information.
>>> def fun1():
    return [1,2,3]

>>> print(fun1)
<function fun1 at 0xb71cfb8c>
>>> a=fun1()
>>> a
[1, 2, 3]
>>> def fun2():
    return 4,5,6

>>> b=fun2()
>>> b
(4, 5, 6)
>>> def fun3():
    print "hello woeld"

    
>>> c=fun3()
hello woeld
>>> c
>>> c
>>> print(fun(3))

Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    print(fun(3))
NameError: name 'fun' is not defined
>>> type(c)
<type 'NoneType'>
>>> print(c)
None
>>> type(c)
<type 'NoneType'>
>>> 

函數的返回值可以是一個列表或一個元組,如果沒有return,那麼仍然會返回一個NONE,類型那個為typenone,

 

對於全局ii變量,我們在函數中只能進行引用,而不能進行修改

局部在堆棧中分配,

 當我們你試圖在函數中修改全局變量的時候,python會發生屏蔽,會在函數中發生屏蔽機制,額外創建一個臨時變量,只能對臨時變量進行修改

但是我們可通過global關鍵子在函數中強制對全局變量進行修改

 1 >>> 
 2 >>> number=5
 3 >>> def fun6():
 4     global number
 5     number=10
 6     return number
 7 
 8 >>> fun6()
 9 10
10 >>> print(num)
11 10
12 >>> print(number)
13 10
14 >>> 

python函數還可以進行嵌套

>>> 
>>> def f1():
    print("fun1..")
    def fun2():
        print("fun2")函數作用范圍同c/c++
    fun2()

    
>>> f1()
fun1..
fun2
>>> 

 

 

函數都嵌套傳參數,對於第一種方法,如果我們只是傳了一個參數,那麼會返回一個函數,表示需要想第二個函數傳參數,

簡單的做法就是直接連續寫兩個括號傳兩個參數

 1 >>> def fun1(x):
 2     def fun2(y):
 3         return x*y
 4     return fun2
 5 
 6 >>> fun1()
 7 
 8 Traceback (most recent call last):
 9   File "<pyshell#108>", line 1, in <module>
10     fun1()
11 TypeError: fun1() takes exactly 1 argument (0 given)
12 >>> fun1(5)
13 <function fun2 at 0xb71cfb8c>
14 >>> type(fun1(5))
15 <type 'function'>
16 >>> i=fun1(5)
17 >>> i(10)
18 50
19 >>> fun1(3)(8)
20 24

 

 

對於python3.0之前,為了可以在局部對外部變量進行改變,因為list不是在堆棧山申請的,所以我們可以改變外部的list變量

1 >>> def fun5():
2     x=[5]
3     def fun6():
4         x[0]*=x[0]
5         return x[0]
6     return fun6()
7 
8 >>> fun5()
9 25

3.0之後可以只有 nonlocal 

閉包就是內部函數可以使用外部的作用區間(不是全局的)進行引用,那麼這個內部函數就被叫閉包

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved