关于函数的理解问题
def ceshi(x):print(x)
ceshi(a = 10)
想问一下, 这个是把a=10 当作参数传递给函数的x了, 为啥无法打印x出来呢? 本帖最后由 疾风怪盗 于 2020-9-5 11:41 编辑
定义的时候没有a参数,a是什么呢?
要么直接写ceshi(10),要么ceshi(x=10)
或者def ceshi(a):
print(a) ceshi(a = 10)
这句话有问题。你的本意估计是定义一个变量a,赋值为10,然后作为参数传进函数ceshi中
但是你这么写,实际上的意思却是,调用函数ceshi,并给形参a赋值为10 。 但是,你的这个函数ceshi在定义的时候却没有形参a,只有一个形参x。因此就出错了
下面两种写法,你看看哪种是你需要的
def ceshi(x):
print(x)
ceshi(x = 10)
def ceshi(x):
print(x)
a = 10
ceshi(a) sunrise085 发表于 2020-9-5 11:50
这句话有问题。你的本意估计是定义一个变量a,赋值为10,然后作为参数传进函数ceshi中
但是你这么写,实 ...
我把10赋值给a了, a然后把指赋值给x了, 这个逻辑应该是正确的啊。 从入门到富豪 发表于 2020-9-5 12:18
我把10赋值给a了, a然后把指赋值给x了, 这个逻辑应该是正确的啊。
def ceshi(a):
print(a)
b=5
ceshi(b)
你看 这样就是正确的b赋值给a了,所以能打印啊 从入门到富豪 发表于 2020-9-5 12:19
def ceshi(a):
print(a)
你没理解形参和实参额概念,再好好理解一下吧 从入门到富豪 发表于 2020-9-5 12:18
我把10赋值给a了, a然后把指赋值给x了, 这个逻辑应该是正确的啊。
逻辑是对的,但是语法不对
你仔细看看我在3楼给你写的。
你的这种写法:ceshi(a = 10) ,这是关键字参数的写法,但是你的函数定义中却没有 a 这个关键字参数,所以就报错了 这样吧,大家说一下为啥这个是正常打印的
def ceshi(x)
print(x)
ceshi(x=10)
至于大家想知道我为什么要这样写, 是因为创建字典的时候
x = dict(‘a’=1234,‘b’=234)
这样是可以的, 但是如果写
x=(‘a’=1234,‘b’=234)
dict(x)这样就会报错。 所以我要弄清楚 从入门到富豪 发表于 2020-9-5 17:18
这样吧,大家说一下为啥这个是正常打印的
def ceshi(x)
print(x)
你知道什么是位置参数和关键字参数吗?位置参数就是你直接传入一些参数,Python根据参数的位置来判断你传入的实参分别对应哪些形参。关键字参数指的是直接指定形参是哪个量,比如ceshi(x=10),这就是关键字参数。
而你前面写的ceshi(a=10),也是传入关键字参数。但你的函数里面没有a这个形参啊!所以会报错。
而你写的x = ('a'=1234, 'b'=234),你告诉我,x是什么数据类型?列表,字符串还是啥?Python看得懂你定义了个什么东西吗?dict函数的用法就是dict(key=value, key2=value2, ...),而不是你单独把括号里的东西摘出来给一个变量再来dict(x)的 从入门到富豪 发表于 2020-9-5 12:19
def ceshi(a):
print(a)
你觉得是这个意思,python觉得是这个函数里面有个参数a,然后你把a给它赋值成10,但是那个函数也没有参数a,所以python又找不到a,所以就会报错 从入门到富豪 发表于 2020-9-5 17:18
这样吧,大家说一下为啥这个是正常打印的
def ceshi(x)
print(x)
你不能把一个字符串赋值成整数
dict() 允许传入形如 a=1, ... 的形式进行字典的 key=value 赋值
因为 dict() 里指定了一个参数,可以以字典的方式打包(包括解包) 我知道答案了。这个是传参的知识点, 里面a=10,是指给a传参,但是函数里面没有接受的元素, 所以会报错, 所以写b=10是正常的。
页:
[1]