让Python(2.7)将%d替换为零

让Python(2.7)将%d替换为零,python,nonetype,Python,Nonetype,我有点像 for cnt in range(1,33): someFunction(%d) 'table{:d}'.format(cnt) if cnt > 1 else 'table' 我根据这个想法构建了一些语法,然后发现在第一次调用期间(当cnt==1时),函数中的%d应该替换为(无)而不是1。所以我试过这个 for cnt in [None] + range(2,33): someFunction(%d) 但这不起作用。我需要将一些整数作为参数传递到函数中,以

我有点像

for cnt in range(1,33):
    someFunction(%d)
'table{:d}'.format(cnt) if cnt > 1 else 'table'
我根据这个想法构建了一些语法,然后发现在第一次调用期间(当
cnt==1
时),函数中的
%d
应该替换为(无)而不是1。所以我试过这个

for cnt in [None] + range(2,33):
    someFunction(%d)
但这不起作用。我需要将一些整数作为参数传递到函数中,以防止出错

当然,我可以更改函数定义(并使用空字符串),但这将是相当多的工作

有没有一个优雅的解决办法

更新0

实际上有一大堆函数,我在其中编写了
someFunction
。它们都是建立在假设得到一个整数参数的基础上的。我必须通读所有这些代码,才能将空字符串传递给它们

更新1


谢谢大家的评论。我想唯一的选择是修改函数本身,以便它们接受一个字符串参数,该参数对于
cnt==1

而言为空。我不知道我是否会称之为“优雅”,但是:


我希望我理解你的意思是正确的。。。如果是,这应该可以做到:

for cnt in range(1,33):
    if cnt == 1:
       someFunction()
    else:
       someFunction(cnt)
(未经测试)

如果你想变得(更多?)神秘


你想要的是

for cnt in range(1,33):
    someFunction(%d)
'table{:d}'.format(cnt) if cnt > 1 else 'table'

在你的功能中

这似乎是装饰师的工作:

def func_selector(func):
    def wrapper(*argv, **kwargs):
        if len(argv) ==0 or argv[0] == 1:
            return func()
        else:
            return func(argv[0])
    return wrapper

@func_selector
def someFunction():
    pass  # Function declaration here.

我考虑过了,但是someFunction需要一个整数参数才能运行。@rubengert:那么你应该考虑重新设计
someFunction
。可能有
someFunction
本身处理不打印
1
?无论如何,
%d
应该做什么?这不是有效的Python语法。对于
someFunction
,输入应该是什么?如果没有传递任何内容,那么
someFunction
会发生什么情况?用没有任何含义的内容替换参数是什么?跳过那个电话?或者你真的想做一些字符串操作,你想提供一个空字符串吗?还是你还在搞清楚你到底想让代码做什么?真遗憾。问题的原始解释更有趣不,函数也应该为
cnt==1
运行,但在这种情况下
%d
应该保持为空。(它应该为“table%d”%cnt呈现“table”)。这个问题使它看起来像是
%d
是某种占位符。您的注释使参数看起来像是与格式字符串一起使用的?您以前的答案相当于current,但值得信任而不是current。不是你的错问题太模糊了(顺便说一句,-1不是我的)@frlan:someFunction()抛出一个错误(“…接受1个参数…”)你可以为函数设置一个默认值。。。类似于
def someFunction(counter=None)
应该可以工作第一个函数不会将
[2]
传递给函数吗?@alKid,不,它传递
*[2]
等。
someFunction(*)
返回类型错误:someFunction()只接受一个参数(给定0)@rubengert,是的,你的问题我很不清楚。你得到的所有答案都选择了相同的错误解释,所以这不可能是我们的错
def func_selector(func):
    def wrapper(*argv, **kwargs):
        if len(argv) ==0 or argv[0] == 1:
            return func()
        else:
            return func(argv[0])
    return wrapper

@func_selector
def someFunction():
    pass  # Function declaration here.