Python新手,正在测试通过引用传递和传递值的简单示例。但是我遇到了意想不到的语法障碍,但不确定我在这里缺少什么。
#!usr/local/bin python3
def print_reference(list[:]):
temp = list.pop()
print(temp)
def print_value(list):
temp = list.pop()
print(temp)
list = ['hello', 'goodbye', 'laters']
print_reference(list)
print("After Reference" + list)
print_value(list)
print("After Value" + list)
我认为你的名字倒退了。使用print_value
复制lst = lst[:]
函数
def print_reference(lst):
temp = lst.pop()
print(temp)
def print_value(lst):
lst = lst[:]
temp = lst.pop()
print(temp)
lst = ['hello', 'goodbye', 'laters']
print_value(lst)
print("After Value", lst)
print_reference(lst)
print("After Reference", lst)
输出:
laters
After Value ['hello', 'goodbye', 'laters']
laters
After Reference ['hello', 'goodbye']
顺便说一下,list
不是一个好的变量名,因为它会影响内置的'list`。
重要的是区分编译时和运行时发生的情况。一旦定义了函数,这就解决了:
def print_value(lst):
因此,使用list
复制[:]
没有意义,并且您会收到语法错误。
但是当函数被调用时,函数内部的所有内容都会被执行。因此,这行内部的功能:
lst = lst[:]
每次调用函数时都会生成一个新的(浅)lst
副本。此副本仅存在于函数内部,并在函数完成(返回)后进行垃圾回收。
def print_reference(lst): # You cannot do a list slice as an argument
l = lst[:]
temp = l.pop()
print(temp)
def print_value(lst):
temp = lst.pop()
print(temp)
lst = ['hello', 'goodbye', 'laters']
print_reference(lst)
print("After Reference: " + ''.join(lst))
print_value(lst)
print("After Value: " + ''.join(lst))
因为它是语法错误。我不明白这个def print_reference(list[:]):
第二个没关系,你把名单的参数放到功能上。您可以通过def print_reference(name: list):
指定类型,请参阅:How do I pass a variable by reference?
我认为这就是你想要做的xD。无论如何欢迎来到python!
def print_reference(list):
list = list[:]
temp = list.pop()
print(temp)
def print_value(list):
temp = list.pop()
print(temp)
list = ['hello', 'goodbye', 'laters']
print_reference(list)
print("After Reference",list)
print_value(list)
print("After Value",list)
问题是您必须传递参数而不进行编辑。您可以在函数内编辑它,但不能直接在括号内编辑它。
def print_reference(list):
将列表名称更改为l
或lst
而不是list
可能是个好主意,因为list()
函数用于将类似字符串的对象放入列表中。