这里是python编程的新手。我需要一些帮助来理解为什么这不起作用:
import x.y # x is a package with __init__.py
def func1(x.y.z): # I get a syntax error here
当我这样做时它起作用:
import x.y
a = x.y.z
def func1(a):
我已经在网上搜索,无法找到任何可以直接回复此问题的内容。
感谢。
答案 0 :(得分:1)
使用def
定义新函数,这些函数接受一些可能未知的(!)参数。
因此,def sin(x):
表示“定义一个名为sin
的函数,它接受一个参数”。请注意,此代码表示x
可以绝对是,函数定义不会(也不能)对其类型,值,大小应用任何限制等等。
当你这样做时
a = "hello"
def test(a):
pass
函数定义中的a
仅仅是一个参数,它与您在其中使用的任何其他a
没有任何关系码!您可以将其称为x
,pi
,z
或其他任何名称无关紧要(代码可读性除外)。
当你尝试写
时def test(x.y.z):
pass
您会收到语法错误,因为存在对变量'和参数'名称的限制,这些限制不允许您根据需要调用变量。为什么?只是因为否则你会得到很多不确定性。例如,如何解析这个:
# a poorly formatted number literal or a variable definition??
1234hello = "test"
# attempt to access a member of a class (or module) or a variable definition??
x.y.z = 5
# is "yay a variable's name or a poorly formatted string literal??
x = "yay - 5
# the same question as above
f' = df/dx
函数参数是一个变量,因此对它也施加了相同的限制。
顺便说一句,看看SO代码荧光笔疯狂试图突出上面的代码。