如何在函数中使用%s或带**参数的格式(Python 3.5)
我是Python新手。 我尝试实现一个可以传递参数并使用%s打印dict args中的键和值的函数。但它告诉我使用%s无效。那真让我困惑。谢谢你告诉我为什么如何在函数中使用%s或带**参数的格式(Python 3.5),python,python-3.5,Python,Python 3.5,我是Python新手。 我尝试实现一个可以传递参数并使用%s打印dict args中的键和值的函数。但它告诉我使用%s无效。那真让我困惑。谢谢你告诉我为什么 >>> def person(name, age, **args): print('name:', name, 'age:', age) for i in args.keys(): print('%s:%s', % (i, args[i])) SyntaxError: invalid syntax 下面的代码是
>>> def person(name, age, **args):
print('name:', name, 'age:', age)
for i in args.keys():
print('%s:%s', % (i, args[i]))
SyntaxError: invalid syntax
下面的代码是我尝试使用格式而不是%s来打印args的键和值。
但它一直告诉我args是非类型的。然后我以正常的方式打印args(“args:,args”),它可以工作。我想知道它为什么一直这么说。谢谢
>>> def person(name, age, **args):
print('name:', name, 'age:', age)
for i in args.keys():
print('{}:{}').format(i, args[i])
>>> person('Joey', 20, weight=60, length=172)
name: Joey age: 20
{}:{}
Traceback (most recent call last):
File "<pyshell#79>", line 1, in <module>
person('Joey', 20, weight=60, length=172)
File "<pyshell#78>", line 4, in person
print('{}:{}').format(i, args[i])
AttributeError: 'NoneType' object has no attribute 'format'
def人员(姓名、年龄、**args):
打印('姓名:',姓名,'年龄:',年龄)
对于args.keys()中的i:
打印({}:{}')。格式(i,args[i])
>>>人('Joey',20岁,体重=60,身长=172)
姓名:乔伊年龄:20
{}:{}
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
人('Joey',20岁,体重=60,身长=172)
文件“”,第4行,本人
打印({}:{}')。格式(i,args[i])
AttributeError:“非类型”对象没有属性“格式”
您有额外的
逗号
,给您:
def person(name, age, **args):
print('name:', name, 'age:', age)
for i in args.keys():
print('%s:%s' % (i, args[i]))
person('Joey', 20, weight=60, length=172)
您有额外的
逗号
,这里是:
def person(name, age, **args):
print('name:', name, 'age:', age)
for i in args.keys():
print('%s:%s' % (i, args[i]))
person('Joey', 20, weight=60, length=172)
您的语法错误,您需要格式化打印中的字符串:
print('{}:{}'.format(i, args[i]))
您的语法错误,您需要格式化打印中的字符串:
print('{}:{}'.format(i, args[i]))
字符串后面还有一个逗号
,
。删除它,您的代码就会正常工作。此外,对于您的案例,最好使用dict.item(…)
而不是dict.keys(…)
。下面是示例代码:
>>> kwargs = {'name': 'My name', 'age': 'My Age', 'Address': 'My Address'}
# v `dict.items()` to get tuple of
# v (`key`, `value`) pair
>>> for i in kwargs.items():
... print('%s:%s' % (i))
... # ^ No comma
Address:My Address
name:My name
age:My Age
此外,按照一般惯例,变量名应该是
kwargs
,而不是args
。请阅读:您的字符串后面还有一个逗号,
。删除它,您的代码就会正常工作。此外,对于您的案例,最好使用dict.item(…)
而不是dict.keys(…)
。下面是示例代码:
>>> kwargs = {'name': 'My name', 'age': 'My Age', 'Address': 'My Address'}
# v `dict.items()` to get tuple of
# v (`key`, `value`) pair
>>> for i in kwargs.items():
... print('%s:%s' % (i))
... # ^ No comma
Address:My Address
name:My name
age:My Age
此外,按照一般惯例,变量名应该是
kwargs
,而不是args
。请阅读:您定义函数的方式:
def人员(姓名、年龄、**args):
意味着您需要2个强制参数+关键字参数
所以,你需要做一些类似的事情:
person(参数1、参数2、关键字参数1=关键字参数值、关键字参数值=关键字参数值)
而你在做什么
print('name:',name,'age:',age)
这是4个参数:“名称:”,名称,“年龄:”,年龄
它实际上没有连接到%
或.format
函数。这是Python的基本语法
那么,您还有一个问题:
print({}:{}').format(i,args[i])
您正在对print(…)输出调用.format方法,该输出为None。因此,您会看到错误“NoneType没有.format方法”
因此,只要做:
print({}:{})。格式(i,args[i])
要修复它。定义函数的方式:
def人员(姓名、年龄、**args):
意味着您需要2个强制参数+关键字参数
所以,你需要做一些类似的事情:
person(参数1、参数2、关键字参数1=关键字参数值、关键字参数值=关键字参数值)
而你在做什么
print('name:',name,'age:',age)
这是4个参数:“名称:”,名称,“年龄:”,年龄
它实际上没有连接到%
或.format
函数。这是Python的基本语法
那么,您还有一个问题:
print({}:{}').format(i,args[i])
您正在对print(…)输出调用.format方法,该输出为None。因此,您会看到错误“NoneType没有.format方法”
因此,只要做:
print({}:{})。格式(i,args[i])
在第二种情况下,你的格式应该在你对
print
的调用中-例如print({}:{}.format(i,args[i])
在第二种情况下,你的格式应该在你对print
的调用中-例如print({}:{}.format(i,args[i])