python有指針嗎
❶ python中.*和.*的區別
概要等式運算函數中參數的定義與調用定義函數時*的作用:out定義函數時:**OUTOUT調用函數時,和*均是為了分配參數用的調用函數時:*:調用函數時:**:
概要
關於""和"*"兩個特殊符號的區別,首先在python中是沒有指針的,與C++有很大的不同。
等式運算
python中常用的乘法運算符*
>>> 3*7
21
>>> l=[2 * i for i in range(100) ]
>>> l
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102,
104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198]
函數中參數的定義與調用
如果在定義函數時,代表收集參數,*代表收集關鍵字參數。
定義函數時*的作用:
def symbols(*params):
print(params)
out
symbols(1,2,3)
(1,2,3)
此時*是將調用時提供的所有值,放在一個元組里。
這種情況下,在函數定義時的形參里的*params後面,就最好不要再加入別的形參了,比如你定義成 def symbols(*params,x) ,調用的時候symbols(1,2,3),就會報錯。因為這樣python分不清哪個數據是給params的。如果你非要這么定義也行,不過在調用的時候,必須顯示的指出哪個值是給x的。比如symbols(1,2,x=3),通過這種方式調用才不會出錯。
定義函數時:**
對於之前參數是*params的情況,symbols並不能傳入關鍵字參數。仍然採取這種方式定義時:會報錯
def symbols1(*params):
print(params)
OUT
>>>symbols1(x=1,y=2,z=3)
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
TypeError: symbols1() got an unexpected keyword argument 'x'
報錯
因為*號並不會收集關鍵字參數。所以需要如下方式修改,採用兩個星號:
def symbols2(**params):
print(params)
這樣調用symbols2就不會有問題:
OUT
>>> symbols2(x=1,y=2,z=3)
{'z'=3,'x'=1,'y'=2}
以上輸出得到一個字典。字典中元素的先後順序取決於你的環境。
調用函數時,和*均是為了分配參數用的
調用函數時:*:
例如,還是剛剛那個print函數
def symbols(x,y):
print(x)
print(y)
兩個形參,如果只想傳入一個形參呢
對,「調用函數時分配參數」跟「定義函數時收集參數」,反過來了!
假設你還有一個元組:
params=(1,2)
可以通過如下方式調用symbols函數:
>>> symbols(*params)
就可以輸出:
1
2
調用函數時:**:
和上面*時一樣,只是分配的是字典。
params={'x':1,'y':2}
可以通過如下方式調用symbols函數:
>>> symbols(**params)
就可以輸出:
1
2
❷ Python中數組有類似C中指針嗎 可以把一串數據賦值給數組 從數組第一個開始賦值
代碼如下:
#coding=utf8
defdata(arr):
foriinrange(10):
arr.append(i)
if__name__=='__main__':
#定義一個數組
arr=[]
#通過方法data()為arr賦值
data(arr)
#輸出數組
print(arr)
運行結果:
❸ Python有沒有指針,下面的例子如何理解
python沒有指針,但它也可以傳引用
最簡單的例子
def add(a, my_list=[]):
my_list.append(a)
print my_list
add(1) -> [1]
add(2) -> [1,2]
add(3) -> [1,2,3]
https://docs.python.org/2.7/tutorial/controlflow.html#default-argument-values
❹ python怎麼使用指針
python 不像c, 沒辦法直接使用指針。指針就是內存地址。
python中,最接近指針的就是, id() 返回某個對象的唯一id,類似於地址了。
❺ 在python中,變數就是指針,可以這樣理解么
不是。
應該是指向指針的指針,只不過變數本身的地址在python中不提供訪問途徑。也就是只能訪問這個指針所指地址(指針)和此地址里的內容。
比如
python中 a="xyz"
a本身的地址(對應的C運算:&a)python里是沒有辦法看到的。
python的id(a),返回的是"xyz"在內存中的起始地址,而不是存儲a變數本身的地址。
❻ Python中也有指針的概念嗎
沒有,python比較簡單 容易理解。
❼ python 里邊 有沒有類似C++的 別名 或者 指針 的功能
樓上說的列表讓我想起來,你可以利用列表的可變性,就是看起來有點怪:
>>>classfoo(object):
def__init__(self):
self.bar=['Initial']
>>>a=foo()
>>>a.bar[0]
'Initial'
>>>b=a.bar
>>>a.bar[0]='other'
>>>b[0]
'other'
❽ python小白的問題
首先python中不存在指針。如果非要說有,那麼python的一切變數全是指針(比如a=1,python會在某處創建了整數1,然後把a指向這里)。open返回的一般稱為文件對象。
這就是python。——「一切皆對象」
(另外,一般建議用with open("xxx.txt",'w') as tp: 後加語句塊打開文件,這種方式會在語句塊結束時自動關閉文件)
❾ python有一級指針和二級指針的概念嗎
python把一切數據,一切的一切都看作對象,在python中,沒有變數,只有指針,要說變數,也是指針變數。