Python 不可用的函数参数
Python函数中是否有用户无法访问的参数的语法。或者这可能吗 例如,我想定义一个函数,该函数只接受用户的一个参数,但需要另一个参数,该函数需要在不同的设置中调用自身,例如:Python 不可用的函数参数,python,function,lambda,functional-programming,Python,Function,Lambda,Functional Programming,Python函数中是否有用户无法访问的参数的语法。或者这可能吗 例如,我想定义一个函数,该函数只接受用户的一个参数,但需要另一个参数,该函数需要在不同的设置中调用自身,例如: def function(userEntry, key1 = 0): if key1 == 0: #setting 1 ##SOME INITIAL OPERATIONS ## key1 += 1 function(userEntry, key1) if k
def function(userEntry, key1 = 0):
if key1 == 0: #setting 1
##SOME INITIAL OPERATIONS ##
key1 += 1
function(userEntry, key1)
if key1 == 1: #setting 2
##FINAL OPERATIONS##
print('Some function of ' userEntry)
如果按上述方法操作,用户仍然可以访问key1并按照自己的意愿初始化程序,但是,我不希望用户能够这样做。我只希望用户输入userEntry,而函数需要根据用户输入和键1上的条件自行调用,操作将发生变化 在调用您在其他地方使用的实际函数之前,拥有一个最终用户调用的函数,该函数执行它需要的操作
def userFunc(input):
# Do stuff
function(input, key)
def function
# Does common functionality
我同意有一个用户调用的单独函数是个好主意。我在这里编写了一些代码:
key = 0
def userFunc(input):
# Do stuff
function(input, key)
def function(userEntry, key1 = 0):
if key1 == 0: #setting 1
##SOME INITIAL OPERATIONS ##
print('initial operation')
print key1
key1 += 1
return ##to make the function not instantly repeat itself
if key1 == 1: #setting 2
##FINAL OPERATIONS##
print('final operation')
print key1
userFunc('inValue')
这将在第一次调用userFunc()时执行初始操作,然后在下次调用时执行最终操作 根据您最近的评论,您可能想要这样的东西:
class OffsetedIncrementer:
_offset = 100
def __init__(self, offset=100):
OffsetedIncrementer._offset = offset
def inc(self, x):
return x + 1 + OffsetedIncrementer._offset
oi = OffsetedIncrementer(200)
func = oi.inc
print(func(2))
输出:
203
定义一个内部函数?你可以使用一个辅助函数定义一个内部函数可能会起作用,但我希望有一个简单的语法答案来定义这个不可用的参数。这个语法是如何工作的?函数如何知道是一个“用户”调用它,还是另一个函数调用它?向客户机代码提供另一个具有所需签名的函数是一个简单的解决方案。在Python代码中没有私有成员,您仍然可以考虑将这些函数放入模块中,并用下划线前缀命名内部函数。但这只是客户机代码应该遵守的约定。谢谢,我最终实现了两个函数。但这条路看起来也很干净。不过,作为Python的新手,我尽量避免类中的全局变量。@Semzem,避免共享状态不适合新手,实际上是一种很好的做法。但有时,当您确实需要在类的所有实例之间共享某些内容时,共享状态是有意义的。如果没有,并且有一些特定于每个实例的配置要传递,只需将其传递到
\uuuu init\uuuu
并使用self在每个实例中单独分配。\u offset=offset