Python——函數

開始看Python也有一段時間了,但是之前一直是小打小鬧,連函數都沒用過,頂多用過幾個內置函數就高興到晚上能多吃一口飯#這大概會成爲我長胖的藉口了。

突然想着還是得寫點東西,才能逼着自己去掌握。

先借這個位置掛一下某大佬的博客:某個除了系圍巾什麼都會的大佬

閒言少敘,還是回到主題上來。今天想寫的是在Python中如何自定義函數。

'''

介於我只學過C++,所以只能和C++對比了,望大家諒解(頂鍋蓋逃走)。

'''

首先,先放一段代碼。這個大概是最基礎的了(✺ω✺)。

def function1(str):

    print(str)
    return
    
function1("function1")
function1("emmmmmmmm")

該代碼無輸入。輸出爲:

function1
emmmmmmmm

下面,想先談談Python和C++在自定義函數上的區別和聯繫。

①在Python中最大的特點(在我眼中),就是那個冒號,然後C++中也有一大特色就是分號。(真是遙相呼應(╯‵□′)╯︵┻━┻)如果沒有加冒號的話--->就是報錯啦:

  File "/usercode/file.py", line 1
    def function1(str)
                     ^
SyntaxError: invalid syntax
②在C++中一般自定義函數的時候,格式都是--》類型 函數名(類型 變量名1,類型 變量名2……)這樣;但是在Python中,自定義函數一定要加上def(個人猜測是 Define Function 類似的意思吧)。但是呢,括號內到還放的是變量名。

③再有,就是那個return了,哪兒都有……也是絕了。

從上面的例子裏,只能看出上面上面三點。再看下面的例子:(原來寫過一篇A+B的文章,雖然可以直接用sum函數,但是自己寫一個也無傷大雅不是)

def sum( arg1, arg2 ):
   # 返回2個參數的和."
   total = arg1 + arg2
   return total;

# 調用sum函數
total = sum( 10, 20 );
print ("10 + 20 = ", total)

說到這裏,有不得不提起形參和實參了(考試之前背書背到絕望)。在C++中,有關形參和實參提到了很多,這裏就簡單提兩句。比如:單向傳遞,地址傳遞etc.不一而足。但是呢,在這裏還想再附一段Python的代碼,再次說明這個問題:

def function2(a):
    a=10
    return a 
b=2 
function2(b)
print(b)


輸出:

2

由此引出☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☞☟☟☟☟☟☟☟☟☟☟☟

可更改(mutable)與不可更改(immutable)對象

在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而 list,dict 等則是可以修改的對象。

  • 不可變類型:變量賦值 a=5 後再賦值 a=10,這裏實際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當於新生成了a。

  • 可變類型:變量賦值 la=[1,2,3,4] 後再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。

python 函數的參數傳遞:

  • 不可變類型:類似 c++ 的值傳遞,如 整數、字符串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在 fun(a)內部修改 a 的值,只是修改另一個複製的對象,不會影響 a 本身。

  • 可變類型:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響

python 中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變對象和傳可變對象。

------------------這裏是分割線,以上寫於2018/1/25------------------
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章