在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 二、函數(shù)傳值問題
二、Enum 的源碼
前言
一、Python 模塊簡(jiǎn)介
一、List(列表)
五、匿名函數(shù)
三、什么是元類
二、循環(huán)語(yǔ)句
二、模塊的使用
三、第一個(gè) Python 程序
線程與進(jìn)程
Python
三、條件語(yǔ)句和循環(huán)語(yǔ)句綜合實(shí)例
四、對(duì)象的描述器
三、類的屬性
一、迭代
五、迭代器和生成器綜合例子
六、運(yùn)算符相關(guān)的魔術(shù)方法
一、枚舉類的使用
前言
一、簡(jiǎn)明概述
二、Python 的基本數(shù)據(jù)類型
多線程編程
五、作用域
四、包
四、枚舉的比較
四、Python 中的變量
六、類的多態(tài)
一、Python 中類也是對(duì)象
一、Python 的 Magic Method
前言
四、生成器
一、面向?qū)ο蟮母拍?/span>
五、類的繼承
二、類
二、使用 <code>type()</code> 動(dòng)態(tài)創(chuàng)建類
進(jìn)程
二、set
三、主模塊和非主模塊
一、字典(Dictionary)
前言
前言
前言
前言
四、集成開發(fā)環(huán)境(IDE): PyCharm
前言
四、函數(shù)的參數(shù)
三、lsit 生成式(列表生成式)
四、自定義元類
四、類的方法
二、函數(shù)傳值問題
二、注釋
一、條件語(yǔ)句
一、Python 語(yǔ)法的簡(jiǎn)要說明
三、函數(shù)返回值
三、基本數(shù)據(jù)類型轉(zhuǎn)換
三、屬性的訪問控制
二、Python 的安裝
前言
三、命名規(guī)范
一、Python 自定義函數(shù)的基本步驟
三、自定義類型的枚舉
五、自定義容器(Container)
二、Python 迭代器
前言
二、tuple(元組)
一、Python 簡(jiǎn)介
前言
前言
前言
二、構(gòu)造(<code>__new__</code>)和初始化(<code>__init__</code>)
前言

二、函數(shù)傳值問題

先看一個(gè)例子:

# -*- coding: UTF-8 -*-
def chagne_number( b ):
    b = 1000

b = 1
chagne_number(b)
print( b ) 

最后輸出的結(jié)果為:

1

這里可能有些人會(huì)有疑問,為啥不是通過函數(shù)chagne_number更改了 b 的值嗎?為啥沒有變化,輸出的結(jié)果還是 1 ,這個(gè)問題很多編程語(yǔ)言都會(huì)講到,原理解釋也是差不多的。

這里主要是函數(shù)參數(shù)的傳遞中,傳遞的是類型對(duì)象,之前也介紹了 Python 中基本的數(shù)據(jù)類型等。而這些類型對(duì)象可以分為可更改類型和不可更改的類型

在 Python 中,字符串,整形,浮點(diǎn)型,tuple 是不可更改的對(duì)象,而 list , dict 等是可以更改的對(duì)象。

例如:

不可更改的類型:變量賦值 a = 1,其實(shí)就是生成一個(gè)整形對(duì)象 1 ,然后變量 a 指向 1,當(dāng) a = 1000 其實(shí)就是再生成一個(gè)整形對(duì)象 1000,然后改變 a 的指向,不再指向整形對(duì)象 1 ,而是指向 1000,最后 1 會(huì)被丟棄

可更改的類型:變量賦值 a = [1,2,3,4,5,6] ,就是生成一個(gè)對(duì)象 list ,list 里面有 6 個(gè)元素,而變量 a 指向 list ,a[2] = 5則是將 list a 的第三個(gè)元素值更改,這里跟上面是不同的,并不是將 a 重新指向,而是直接修改 list 中的元素值。

指向問題

這也將影響到函數(shù)中參數(shù)的傳遞了:

不可更改的類型:類似 c++ 的值傳遞,如 整數(shù)、字符串、元組。如fun(a),傳遞的只是 a 的值,沒有影響 a 對(duì)象本身。比如在 fun(a)內(nèi)部修改 a 的值,只是修改另一個(gè)復(fù)制的對(duì)象,不會(huì)影響 a 本身。

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

因此,在一開始的例子中,b = 1,創(chuàng)建了一個(gè)整形對(duì)象 1 ,變量 b 指向了這個(gè)對(duì)象,然后通過函數(shù) chagne_number 時(shí),按傳值的方式復(fù)制了變量 b ,傳遞的只是 b 的值,并沒有影響到 b 的本身。具體可以看下修改后的實(shí)例,通過打印的結(jié)果更好的理解。

# -*- coding: UTF-8 -*-
def chagne_number( b ):
    print('函數(shù)中一開始 b 的值:{}' .format( b ) )
    b = 1000
    print('函數(shù)中 b 賦值后的值:{}' .format( b ) )

b = 1
chagne_number( b )
print( '最后輸出 b 的值:{}' .format( b )  )

打印的結(jié)果:

函數(shù)中一開始 b 的值:1
函數(shù)中 b 賦值后的值:1000
最后輸出 b 的值:1

當(dāng)然,如果參數(shù)中的是可更改的類型,那么調(diào)用了這個(gè)函數(shù)后,原來的值也會(huì)被更改,具體實(shí)例如下:

# -*- coding: UTF-8 -*-

def chagne_list( b ):
    print('函數(shù)中一開始 b 的值:{}' .format( b ) )
    b.append(1000)
    print('函數(shù)中 b 賦值后的值:{}' .format( b ) )

b = [1,2,3,4,5]
chagne_list( b )
print( '最后輸出 b 的值:{}' .format( b )  )

輸出的結(jié)果:

函數(shù)中一開始 b 的值:[1, 2, 3, 4, 5]
函數(shù)中 b 賦值后的值:[1, 2, 3, 4, 5, 1000]
最后輸出 b 的值:[1, 2, 3, 4, 5, 1000]
上一篇:三、命名規(guī)范下一篇:前言