Python 格式化字符串传值问题(format() 与 %s)

互联网 2021/10/14 1:14:46

目录 # 1. 引言 # 2. %s # 3. str.format() ## 3.1 位置参数 ## 3.2 关键字参数 ## 3.3 通过对象# 1. 引言官方建议,格式化字符串时使用"format"代替使用"%",因为可读性更强;但是为了读懂源码,我们需要两者都学会才行# 2. %s 一般为 2 种形…

目录

# 1. 引言

# 2. %s

# 3. str.format()

## 3.1 位置参数

## 3.2 关键字参数

## 3.3 通过对象


# 1. 引言

        官方建议,格式化字符串时使用"format"代替使用"%",因为可读性更强;但是为了读懂源码,我们需要两者都学会才行

# 2. %s

        一般为 2 种形式,第一种多个格式化字符串需要传值的时候是按照前后顺序来传值的,这就带来一个问题:数量多了以后,很难清楚哪一个占位符对应哪一个实参.
        因此参数较多的情况下,我们用字典赋值,%(name)s 对应 {"name":"LIUYU"}.
        但是此种形式,需要先验知识背书,即你知道%s这个奇形怪状的东西是什么,可读性也不是很好,于是有了str.format().

# 3. str.format()

print("hello.My name is {name}, I'm from {nationality}".format(name='LIUYU',nationality='China'))

         可以说,str.format() 是Python最为推荐的字符串格式化方法

## 3.1 位置参数

print("{},{}".format('LIUYU','China'))
print("{1},{0},{1}".format('LIUYU','China'))
li = ['LIUYU','China']
print("{},{}".format(*li))

LIUYU,China
China,LIUYU,China
LIUYU,China

         注意,传入列表是用*,若是不用*,则会把li当成一个列表去处理,即0表示li是format里的下标为0的参数,而这个参数是个列表,可以[0],尊重数据结构了属于是.

print('name is {0[0]} age is {0[1]}').format(li)
# output: name is LIUYU age is 20

## 3.2 关键字参数

print("hello.My name is {name}, I'm from {nationality}".format(name='LIUYU',nationality='China'))

dict = {'name':'LIUYU','nationality':'China'}
print("{name},{nationality}".format(**dict))

         注意,传入字典是用**,如果不用的话,应该也要尊重一波数据结构:

dict = {'name':'LIUYU','nationality':'China'}
print("{0[name]},{0[nationality]}".format(dict))

# output: LIUYU,China

## 3.3 通过对象

class Person:
    def __init__(self, name, age):
        self.name, self.age = name, age

    def __str__(self):
        return 'This guy is {self.name},who is {self.age} years old.'.format(self=self)

print(Person('LIUYU', 20))

# output: This guy is LIUYU,who is 20 years old.

参考文章

  1.  Python模块的使用-- pymysql通过字典插入数据_范翻番樊的博客-CSDN博客
  2.  Python 函数参数前面一个星号(*)和两个星号(**)的区别 | 菜鸟教程
  3. Python3 MySQL 数据库连接 – PyMySQL 驱动 | 菜鸟教程
  4.  python中将字典作为参数传入函数_single-tracking的博客-CSDN博客_python传入字典参数
随时随地学软件编程-关注百度小程序和微信小程序
关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[Python 格式化字符串传值问题(format() 与 %s)]http://www.zyiz.net/tech/detail-241123.html

上一篇:Python(1)作业

下一篇:0034-leetcode算法实现之查找元素位置-find-first-and-last-position-of-element-in-sorted-array-python&golang实现

赞(0)
关注微信小程序
程序员编程王-随时随地学编程

扫描二维码或查找【程序员编程王】

可以随时随地学编程啦!

技术文章导航 更多>
扫一扫关注最新编程教程