我创建了一个日志记录功能,它有两个参数:log_message
和mode
。出于某种原因,当我使用函数并传递参数时,我收到以下错误:
Traceback (most recent call last):
File "/Users/user/git/rip/rip.py", line 248, in <module>
main()
File "/Users/user/git/rip/rip.py", line 195, in main
log('STARTING RIPPER', 'i')
TypeError: log() takes 1 positional argument but 2 were given
这很奇怪,因为log()
肯定需要2个参数。
这是我的代码:
import os
import sys
import time
import mmap
import json
import requests
from bs4 import BeautifulSoup
from clint.textui import puts, colored
def log(log_message, mode='s'):
log_date = '[' + time.strftime("%d.%m_%H:%M:%S") + ']'
if mode == 'e':
log_file = 'test_error.log'
log_ouput = colored.white(log_date) + colored.red('[ERROR]' + log_message)
elif mode == 'i':
log_file = 'test_info.log'
log_ouput = colored.white(log_date) + colored.yellow('[INFO]' + log_message)
elif mode == 'c':
log_file = 'test_info.log'
log_ouput = colored.white(log_date) + colored.white('[COMMENT]' + log_message)
else:
log_file = 'test_download.log'
log_ouput = colored.white(log_date) + colored.green(log_message)
with open(log_file, 'a') as file_writer:
file_writer.write(log_message + '\n')
file_writer.close()
puts(log_ouput)
def main():
log('STARTING RIPPER', 'i')
答案 0 :(得分:0)
也许你的翻译(并且不知道为什么)认为'i'
也是一个正面的论证(没有名字的论证函数)。
尝试改为编写
log('STARTING RIPPER', mode='i')
考虑到这一点,顺便说一句,显式优于隐式,你甚至应该写
log(log_message='STARTING RIPPER', mode='i')
答案 1 :(得分:0)
这个最小的例子对我有用:
def log(log_message, mode='s'):
print(log_message, mode)
log('STARTING RIPPER', 'i')
我认为您呼叫的log
是不同的log
。尝试
print(log.__module__)
找出函数的来源。
修改强>
要确保您的功能的签名符合您的期望,您可以使用
import inspect
print(inspect.signature(log))
应返回
(log_message, mode='s')