我创建了一个函数(p_r
),该函数将print
或return
函数的结果。
我这样做是为了运行测试。 (print显示输出,return将吐出值但不打印输出)。 - Python noob;所以,让我知道是否有更简单的方法,如“详细”或测试关键字。我已经在这个项目上工作了好几天。
需要的模块......
import random
变量:
yt_url = '' #url of either a video or playlist [user input]
printr_return = True
yt_url1 = 'https://youtu.be/WaGRTixwkSQ'
yt_url2 = 'https://www.youtube.com/playlist?list=PL6FhCd_HO_AD-22-Csv-vYlhLoKlAY3Zt'
功能:
#Switches between printing or returning data, depending on printr_return
#'''
def p_r (statement, printr_return):
if printr_return is True:
print (statement)
else:
return (statement)
#'''
问题:
当我在以下函数中使用NoneType
时,我不明白为什么会得到p_r
:
#Choses between the two urls above and outputs yt_url
#'''
def random_urltest (yt_url1, yt_url2):
rnt = random.choice([1,2])
if rnt == 1:
yt_url = yt_url1
if rnt == 2:
yt_url = yt_url2
p_r (yt_url, False) #-- what's wrong here?
#return yt_url #-- but this works
#'''
运行它:
yt_url = random_urltest (yt_url1, yt_url2) #returns NoneType if I use p_r
p_r ('Running test on url...%s' % (yt_url), True) #This works...
答案 0 :(得分:1)
尝试放在最后
return(p_r(yt_url,False))
而不只是运行函数
答案 1 :(得分:1)
def random_urltest (yt_url1, yt_url2):
rnt = random.choice([1,2])
if rnt == 1:
yt_url = yt_url1
if rnt == 2:
yt_url = yt_url2
val = p_r (yt_url, False)
if val:
return val
答案 2 :(得分:1)
您显然希望random_urltest()
函数返回一个值:
yt_url = random_urltest (yt_url1, yt_url2)
但该功能不会返回任何内容!正如@bell -_- 0001建议的那样,您需要返回其值,而不仅仅是调用 p_r()
:
def random_urltest (yt_url1, yt_url2):
rnt = random.choice([1,2])
if rnt == 1:
yt_url = yt_url1
if rnt == 2:
yt_url = yt_url2
return p_r (yt_url, False)
答案 3 :(得分:0)
事实证明我是“试图重新发明轮子” ......
user2357112为我的整体问题提供了最佳答案(尽管John Gordon和mohammad的答案直接解决了我的问题)
我可以使用内置logging module
来调试/测试 - 和disable logging。
有关如何使用该模块的详细信息非常广泛,但我引用了The Hitchhiker's Guide to Python并进行了快速更改以显示其工作原理......
更改包括:
logging module
logging
配置创建为logger
p_r
对象替换logger
函数random_urltest
功能<强>进口:强>
import random
import logging
创建记录器配置:Formats info
logger = logging.getLogger()
handler = logging.StreamHandler()
formatter = logging.Formatter(
'%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
<强>变量:强>
yt_url = '' #url of either a video or playlist [user input]
yt_url1 = 'https://youtu.be/WaGRTixwkSQ'
yt_url2 = 'https://www.youtube.com/playlist?list=PL6FhCd_HO_AD-22-Csv-vYlhLoKlAY3Zt'
<强>功能:强>
#Choses between the two urls above and outputs yt_url
#'''
def random_urltest (yt_url1, yt_url2):
yt_url = random.choice([yt_url1, yt_url2])
logger.debug('Running test on url...%s',yt_url)
return yt_url
#'''
运行它:
random_urltest (yt_url1, yt_url2)
输出:url将在url1和url2之间切换
2017-05-12 12:48:13,186 root DEBUG Running test on url...https://www.youtube.com/playlist?list=PL6FhCd_HO_AD-22-Csv-vYlhLoKlAY3Zt
[Finished in 0.118s]