鱼C论坛

 找回密码
 立即注册
查看: 1398|回复: 11

[已解决]关于函数的理解问题

[复制链接]
发表于 2020-9-5 11:37:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

想问一下, 这个是把a=10 当作参数传递给函数的x了, 为啥无法打印x出来呢?
最佳答案
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-5 11:40:31 | 显示全部楼层
本帖最后由 疾风怪盗 于 2020-9-5 11:41 编辑

定义的时候没有a参数,a是什么呢?
要么直接写ceshi(10),要么ceshi(x=10)
或者
def ceshi(a):
    print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

我把10赋值给a了,   a然后把指赋值给x了, 这个逻辑应该是正确的啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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了,所以能打印啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-5 13:01:29 | 显示全部楼层
从入门到富豪 发表于 2020-9-5 12:19
def ceshi(a):
    print(a)

你没理解形参和实参额概念,再好好理解一下吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

逻辑是对的,但是语法不对
你仔细看看我在3楼给你写的。
你的这种写法:ceshi(a = 10) ,这是关键字参数的写法,但是你的函数定义中却没有 a 这个关键字参数,所以就报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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)  这样就会报错。   所以我要弄清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-6 12:50:05 From FishC Mobile | 显示全部楼层
从入门到富豪 发表于 2020-9-5 12:19
def ceshi(a):
    print(a)


你觉得是这个意思,python觉得是这个函数里面有个参数a,然后你把a给它赋值成10,但是那个函数也没有参数a,所以python又找不到a,所以就会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-6 13:48:50 From FishC Mobile | 显示全部楼层
从入门到富豪 发表于 2020-9-5 17:18
这样吧,大家说一下为啥这个是正常打印的
def ceshi(x)
    print(x)

你不能把一个字符串赋值成整数
dict() 允许传入形如 a=1, ... 的形式进行字典的 key=value 赋值
因为 dict() 里指定了一个参数,可以以字典的方式打包(包括解包)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-8 17:08:28 | 显示全部楼层
我知道答案了。  这个是传参的知识点, 里面a=10,是指给a传参,但是函数里面没有接受的元素, 所以会报错, 所以写b=10是正常的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 20:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表