kakahzw 发表于 2020-6-10 22:18:42

初学者求问def的语句问题,谢谢解答

>>> def sayHI(name):
        print("嗨,%s" % name)

       
>>> sayHI('小甲鱼')
嗨,小甲鱼


>>> def sayHI(name):
        print("嗨,name")

>>> sayHI('小甲鱼')
嗨,name
>>>

这两个语句有什么区别吗?求问

老八秘制 发表于 2020-6-10 22:21:43

这和def无关
第一个是格式化字符串,%s代表字符串,对应后面的name
第二个由于name包含在引号里,所以py认为它是字符串,自然就不会打印name的值

Twilight6 发表于 2020-6-10 22:23:03

本帖最后由 Twilight6 于 2020-6-10 22:24 编辑



格式化你简单的理解就是将变量把字符串内的格式化占位符替换掉

比如你第一个函数:
def sayHI(name):
      print("嗨,%s" % name)
这里相当于 %s 被 name 替换,所以打印的结果和你输入的参数有关系

而第二个函数:
def sayHI(name):
      print("嗨,name")
你把name 写在引号内,Python 会将其视为字符串,而不是一个变量,所以不管你传入参数是 怎样的,始终打印的是:嗨,name

xiaosi4081 发表于 2020-6-11 07:36:40

本帖最后由 xiaosi4081 于 2020-6-11 18:23 编辑

def sayHI(name):
      print(f"嗨,{name}")
这样写才对

Twilight6 发表于 2020-6-11 08:59:04

xiaosi4081 发表于 2020-6-11 07:36
这样写才对

这样写是错的,你要在字符串前面加上 f 才对,f-strings格式化

BIO-张磊 发表于 2020-6-11 10:03:09

引号括起来,不使用特殊方法,会被当作字符串,而不是变量

1223253411 发表于 2020-6-11 11:31:52

没区别,只是你写错了而已,第二个的print里的语句变成一整个字符串了。
直接
def sayHI(name):
      print("嗨",name)
# 加个逗号变元组就ok了

kakahzw 发表于 2020-6-15 21:39:57

>>> def MyfirstFunction(name):
        '函数定义过程中name是形参'
        print('传递进来的'+ name + '叫做实参,因为ta是具体的参数值!')

       
>>> MyfirstFunction('小甲鱼')
传递进来的小甲鱼叫做实参,因为ta是具体的参数值!


再次求问一下,为什么这样输入进去,第一段不会被打出来?

kakahzw 发表于 2020-6-15 22:02:23

>>> def hello():
        print('Hello--')

       
>>> hello()
Hello--
>>> print(hello())
Hello--
None
>>>

这个也想问一下,None是怎么出现的呢?
页: [1]
查看完整版本: 初学者求问def的语句问题,谢谢解答