从入门到富豪 发表于 2020-9-5 11:37:59

关于函数的理解问题

def ceshi(x):
    print(x)
ceshi(a = 10)

想问一下, 这个是把a=10 当作参数传递给函数的x了, 为啥无法打印x出来呢?

疾风怪盗 发表于 2020-9-5 11:40:31

本帖最后由 疾风怪盗 于 2020-9-5 11:41 编辑

定义的时候没有a参数,a是什么呢?
要么直接写ceshi(10),要么ceshi(x=10)
或者def ceshi(a):
    print(a)

sunrise085 发表于 2020-9-5 11:50:33

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)

从入门到富豪 发表于 2020-9-5 12:18:21

sunrise085 发表于 2020-9-5 11:50
这句话有问题。你的本意估计是定义一个变量a,赋值为10,然后作为参数传进函数ceshi中
但是你这么写,实 ...

我把10赋值给a了,   a然后把指赋值给x了, 这个逻辑应该是正确的啊。

从入门到富豪 发表于 2020-9-5 12:19:47

从入门到富豪 发表于 2020-9-5 12:18
我把10赋值给a了,   a然后把指赋值给x了, 这个逻辑应该是正确的啊。

def ceshi(a):
    print(a)

b=5
ceshi(b)
你看 这样就是正确的b赋值给a了,所以能打印啊

疾风怪盗 发表于 2020-9-5 13:01:29

从入门到富豪 发表于 2020-9-5 12:19
def ceshi(a):
    print(a)



你没理解形参和实参额概念,再好好理解一下吧

sunrise085 发表于 2020-9-5 13:32:36

从入门到富豪 发表于 2020-9-5 12:18
我把10赋值给a了,   a然后把指赋值给x了, 这个逻辑应该是正确的啊。

逻辑是对的,但是语法不对
你仔细看看我在3楼给你写的。
你的这种写法:ceshi(a = 10) ,这是关键字参数的写法,但是你的函数定义中却没有 a 这个关键字参数,所以就报错了

从入门到富豪 发表于 2020-9-5 17:18:53

这样吧,大家说一下为啥这个是正常打印的
def ceshi(x)
    print(x)
ceshi(x=10)
至于大家想知道我为什么要这样写, 是因为创建字典的时候
x = dict(‘a’=1234,‘b’=234)
这样是可以的, 但是如果写
x=(‘a’=1234,‘b’=234)
dict(x)这样就会报错。   所以我要弄清楚

鱼cpython学习者 发表于 2020-9-5 18:34:39

从入门到富豪 发表于 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-6 12:50:05

从入门到富豪 发表于 2020-9-5 12:19
def ceshi(a):
    print(a)



你觉得是这个意思,python觉得是这个函数里面有个参数a,然后你把a给它赋值成10,但是那个函数也没有参数a,所以python又找不到a,所以就会报错

_2_ 发表于 2020-9-6 13:48:50

从入门到富豪 发表于 2020-9-5 17:18
这样吧,大家说一下为啥这个是正常打印的
def ceshi(x)
    print(x)


你不能把一个字符串赋值成整数
dict() 允许传入形如 a=1, ... 的形式进行字典的 key=value 赋值
因为 dict() 里指定了一个参数,可以以字典的方式打包(包括解包)

从入门到富豪 发表于 2020-9-8 17:08:28

我知道答案了。这个是传参的知识点, 里面a=10,是指给a传参,但是函数里面没有接受的元素, 所以会报错, 所以写b=10是正常的。
页: [1]
查看完整版本: 关于函数的理解问题