[英]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.