python重构函数_python重构函数怎么确定参数(在《python从入门到实践》的《外星人入侵》小游戏遇到的问题)?...

展开全部

首先,你对编程的基础知识比较欠缺,导致e69da5e887aa62616964757a686964616f31333433623133你对一些名词的理解有一些错误,这让你的学习变得困难,你应当先去学习对编程中常用的术语以避免对相关教程的理解偏差(廖雪峰的网站中内容比较基础,但也不会对这些基础名词做解释的,因为解释这些需要太大的篇幅,而其中的知识量又很少)。我先给你简单解释两组可能被你混淆的名词:

变量与属性

变量独立存在的,而属性是依对象存在的。

name = 'jack',这个name就是一个变量;

a.name = 'jack',这个name就是一个属性。

变量只在作用域范围内存在,在过程中定义的变量,在过程外就无法访问了,在模块内定义的变量,出了模块就无法访问了。

无特殊情况时,属性在对象可用时就可用(暂不考虑其它语言)。

形参与实参

在一个函数、过程、方法的定义过程中指定的参数,均为形式参数,简称形参,;在调用这个函数、过程、方法时传递的参数,是实际参数,即实参。

def myfn(p1, p2): #p1与p2即形参名

pass

print(myfn(1,10)) # 1与10即实参值

形参是在代码中定义的,实参是在调用时传递的。在函数内部,通过形参名来使用实参值,形参作的作用域与变量一样,即,只在过程内有效。

形参与实参的概念有助于描述或理解”已经定义的参数在调用时没有传值“时的一些问题(比如”形参a无对应实参“)。在形参有传值时,我们更常用的方式是简单的用”参数“称呼它。

然后我来回答你的疑问。

第一个问题,在__init__中通过赋值方式定义了一些属性,那么,除非删除了这些属性,否则,类中其它代码是可以直接使用的。在类实例化为对象时,首先调用了__init__,这些属性就存在了,之后才会调用其它方法,访问这些属性是没问题的。

第二个问题,在update_screen有三个参数,但它调用Ship类的实例ship的blitme时,是没有传递参数的。update_screen定义了多少参数与Ship.blitme定义了多少参数是没有关系的。

第三个问题,ai_settings是形参,在update_screen中的代码执行时,它有了对应的值(实参),因此在update_screen中的代码中可以通过形参ai_settings来使用相应的实参。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值