Python 为什么可以将文件作为字符串传递给open函数

Python 为什么可以将文件作为字符串传递给open函数,python,Python,有人能帮我解释一下这个逻辑吗?我在其他人的代码中看到过,他们通常用字符串表示法将对象传递给函数。例如打开文件功能 txtFile = open("fruits.txt") print(txtFile.read()) 为什么fruits.txt在引号中,什么时候任何东西的对象在传递到另一个函数参数时都应该在引号中,是否有人也可以给我更多的例子,什么时候应该 我知道,例如,使用打印函数,这可以在字符串或对象中显示 name = 'sam' print(name, 'sam') output >

有人能帮我解释一下这个逻辑吗?我在其他人的代码中看到过,他们通常用字符串表示法将对象传递给函数。例如打开文件功能

txtFile = open("fruits.txt")
print(txtFile.read())
为什么
fruits.txt
在引号中,什么时候任何东西的对象在传递到另一个函数参数时都应该在引号中,是否有人也可以给我更多的例子,什么时候应该

我知道,例如,使用打印函数,这可以在字符串或对象中显示

name = 'sam'
print(name, 'sam')
output >>>>> sam sam.
当传递给print方法时,对象名不是以字符串格式放置的,但是,带有fruits.txt的打开文件的示例是以字符串格式包含的。如果我把名字放在一个字符串中

name = 'sam'
print('name', 'sam')
output >>>>> name sam.

正如Barmar所评论的,如果它在引号中,它就是一个字符串,否则它就是一个变量。人们通常使用字符串形式的文件路径,因为这是打开仅在一个位置打开的文件的简单方法。如果要在整个程序中多次打开同一文件,可以使用变量,如下所示:

filename = "fruits.txt"
txtFile = open(filename)
print(txtFile.read())

fruits.txt
不是变量,而是文件名。如果删除引号,则会出现错误:

>打开(fruits.txt)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“水果”
当您传递
open
一个字符串时,它接受该字符串并要求操作系统按该名称打开文件

看起来你的基本误解是变量在字符串中被扩展,或者字符串和变量在任何方面都是可互换的——它们不是。如果你“把一个变量放在一个字符串中”,它就是一个字符串,而不是一个变量

另一方面,f字符串允许在字符串内进行变量插值:

>>> name = 'Sam'
>>> f'My name is {name}'
'My name is Sam'

如果你引用它,它就是一个字符串。如果你不引用它,它就是一个变量。如果你在这方面有问题,你需要检查基本的语言语法。所以这不是一个辅导服务。请注意,字符串是一个对象。我添加了一个示例,因为我在网站上阅读时不清楚您的意思first@Mr.Brad为什么首先将fruits.txt放在字符串中,为什么不能在open函数中调用fruits.txt,或者为什么不能说filename=fruits.txt,为什么使用filename=“fruits.txt”?@ganiyu您可以将其放入字符串中,因为您不能说
filename=fruits.txt
。文本需要(至少实际上)使用引号存储为字符串。如果没有引号,解释器会认为您试图将
fruits
对象上的属性
txt
分配给变量
filename
只有在您打算重用filename变量的情况下才有此示例。@Brad谢谢,此外,除了打开文件外,还需要什么其他形式的python语法才能将对象放入两个字符串中。我在打开的文件中得到了上面的观点,你能直接告诉我其他形式的python函数吗?例如,这是一个机器学习网络欺凌代码,print(“文本消息接收{}”。格式(payload.decode('utf8')))。为什么解码采用utf8的字符串格式,引号何时和为什么采用字符串值,为什么不能通过“utf8”将其作为utf8传递