如何在函数中使用%s或带**参数的格式(Python 3.5)

如何在函数中使用%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 下面的代码是

我是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
下面的代码是我尝试使用格式而不是%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])