[英]Python - Implementing Functions
我正在創建一個函數來檢查x大於y,如果不是,它將切換兩個值並返回它們。
def xGreater(x, y):
if(y > x):
x, y = y, x
return x, y
我的查詢是在另一個函數中使用此函數的最佳方法是什么,我當前的代碼如下:
def gcd(x, y):
x , y = xGreater(x, y)
r = x % y
while(r != 0):
x, y = y, r
r = x % y
return y
我可以不簡單地調用xGreater(x,y)來更改x和y的值,而無需在前面添加x,y =嗎? 或者這僅在返回單個變量時才起作用。 謝謝!
我可以不簡單地調用xGreater(x,y)來更改x和y的值,而無需在前面添加x,y =嗎?
恐怕你做不到,因為x
和y
是不可變的, xGreater()
值傳遞給xGreater()
。
可以在某些特殊情況下完成此操作(例如,如果x
和y
是兩個列表),但通常不能這樣做。
老實說,我會擺脫xGreater()
而只是在gcd()
進行交換:
def gcd(x, y):
if y > x:
x, y = y, x
r = x % y
...
我個人認為這種方式的代碼更具可讀性。
不,整數是不可變的。 但是,您可以減少一個元組打包/拆包的實例:
def xGreater(x, y):
return (y, x) if y > x else (x, y)
NPE有一個更好的解決方案,但我很無聊,想寫一些技巧
def gcd(x,y):
minVal = y ^((x ^ y) & -(x < y))
if ( minVal == y ):
y = x ^ y # Swapping values without a intermediate variable
y = y ^ y # This is highly inefficient to use.
x = x ^ y # But still kinda cool.
return x % y
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.