在某些语言中,可以使用特殊的保留字(例如 ref 或 val)
通过引用或值传递参数。当您将参数传递给Python函数时,它永远不会在离开函数时更改参数的值。唯一的方法是使用 全局 保留字(或据我目前的了解)。
范例1:
k = 2
def foo (n):
n = n * n #clarity regarding comment below
square = n
return square
j = foo(k)
print j
print k
会显示
>>4
>>2
显示k为不变
在此示例中,变量n从不更改
范例2:
n = 0
def foo():
global n
n = n * n
return n
在此示例中,变量n已更改
Python中有什么方法可以调用函数并告诉Python 该参数 是 值 还是 引用 参数,而不是使用global?
其次,在A级剑桥考试,他们现在说一个函数返回 一个 值,而过程返回 不止一个
值。在80年代,我被告知一个函数具有return语句,而过程没有。为什么这现在不正确?
您无法在Python函数中更改不可变的对象(例如str
或)tuple
,但可以执行以下操作:
def foo(y):
y[0] = y[0]**2
x = [5]
foo(x)
print x[0] # prints 25
但是,这是一种怪异的解决方法,除非您需要始终将数组中的某些元素平方。
请注意,在Python中,您还可以返回多个值,从而使得通过引用传递的一些用例不那么重要:
def foo(x, y):
return x**2, y**2
a = 2
b = 3
a, b = foo(a, b) # a == 4; b == 9
当您返回这样的值时,它们将作为元组返回,而元组又将解压缩。
编辑:
另一种思考方式是,虽然您无法在Python中通过引用显式传递变量,但可以修改传入的对象的属性。在我的示例(及其他示例)中,您可以修改列表的成员但是,您将无法完全重新分配传入的变量。例如,请参见下面的两段代码,看起来它们可能会执行类似的操作,但最终结果不同:
def clear_a(x):
x = []
def clear_b(x):
while x: x.pop()
z = [1,2,3]
clear_a(z) # z will not be changed
clear_b(z) # z will be emptied
问题内容: 我在Python out1,out2,out3等中有很多函数,并且想基于传入的整数来调用它们。 是否有捷径可寻? 问题答案: tl; dr:编写函数而不是,并且不要理会此hack。 我无法想象在实际情况中会出现这个问题的合理情况。请重新考虑问题的体系结构;可能会有一个更好的方法(因为将它们存储在列表中意味着除索引外,函数没有其他意义;例如,我只能想象如果要创建该函数,则可以这样做)一堆
C++ 用三种方式向函数传递数值:按值调用(call-by-value)、用引用参数按引用调用(call-by-reference reference argument)和用指针参数按引用调用(call-by-reference pointer argument)。第3章比较了按引用调用与按值调用,本章主要介绍用指针参数按引用调用。 第3章曾介绍过,return 可以从被调用函数向调用者返回一个值
问题内容: 按下烧瓶模板中的按钮后,我希望它调用在app.py中定义的python函数,通过在下面定义函数的地方键入以下内容,可以在模板中调用该函数: app.py中的示例函数: 模板: 在我的按钮中,我具有onclick属性,只是为了测试使用像javascript这样的按钮是否正确按下: 我面临的问题是我需要模板中提供的功能以对应正确的按钮。例如,如果按钮显示启用,那么我需要调用已经定义的启用功
问题内容: 我不确定如何解释,但是当我跑步时 在谷歌浏览器中,我得到的输出像 反引号为什么要调用log函数,为什么要对它进行索引? 由Catgocat在JS室提出的问题,但是除了关于模板化字符串的事情之外,没有任何其他答案是合情合理的。 问题答案: 在ES-6中被称为“标记模板”,有关它们的更多信息,在这里,有趣的是,我在即时通讯的加星标部分中找到了该链接。 但是代码的相关部分在下面(您基本上可以
在将数组传递给java中的函数然后将其分配给新数组时,我得到了相同的旧数组。 当传递数组处理传递对该数组的引用时,为什么会这样?
问题内容: 我是python和Flask的新手。我有一个带按钮的Flask Web App。当我单击按钮时,我想执行python方法而不是Javascript方法。我怎样才能做到这一点? 我看过python的示例,它使用这样的表单标签将我重定向到新页面 但我不希望它将我重定向到新页面。我只希望它执行python方法。 我正在为Raspberry Pi机器人汽车制作这个。当我按下前进按钮时,我希望它