0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python基础知识点(二)

python爬虫知识分享 来源:python爬虫知识分享 作者:python爬虫知识分享 2022-04-01 17:03 次阅读

默认参数最好不为可变对象

函数的参数分三种

可变参数

默认参数

关键字参数

这三者的具体区别,和使用方法在 廖雪峰的教程 里会详细的解释。这里就不搬运了。

今天要说的是,传递默认参数时,新手很容易踩雷的一个坑。

先来看一个示例

deffunc(item,item_list=[]):
item_list.append(item)
print(item_list)

func('iphone')
func('xiaomi',item_list=['oppo','vivo'])
func('huawei')

在这里,你可以暂停一下,思考一下会输出什么?

思考过后,你的答案是否和下面的一致呢

['iphone']
['oppo','vivo','xiaomi']
['iphone','huawei']

如果是,那你可以跳过这部分内容,如果不是,请接着往下看,这里来分析一下。

Python 中的 def 语句在每次执行的时候都初始化一个函数对象,这个函数对象就是我们要调用的函数,可以把它当成一个一般的对象,只不过这个对象拥有一个可执行的方法和部分属性。

对于参数中提供了初始值的参数,由于 Python 中的函数参数传递的是对象,也可以认为是传地址,在第一次初始化 def 的时候,会先生成这个可变对象的内存地址,然后将这个默认参数 item_list 会与这个内存地址绑定。

在后面的函数调用中,如果调用方指定了新的默认值,就会将原来的默认值覆盖。如果调用方没有指定新的默认值,那就会使用原来的默认值。

访问类中的私有方法

大家都知道,类中可供直接调用的方法,只有公有方法(protected类型的方法也可以,但是不建议)。也就是说,类的私有方法是无法直接调用的。

这里先看一下例子

classKls():
defpublic(self):
print('Hellopublicworld!')

def__private(self):
print('Helloprivateworld!')

defcall_private(self):
self.__private()

ins=Kls()

#调用公有方法,没问题
ins.public()

#直接调用私有方法,不行
ins.__private()

#但你可以通过内部公有方法,进行代理
ins.call_private()

既然都是方法,那我们真的没有方法可以直接调用吗?

当然有啦,只是建议你千万不要这样弄,这里只是普及,让你了解一下。

#调用私有方法,以下两种等价
ins._Kls__private()
ins.call_private()

时有时无的切片异常

这是个简单例子

my_list=[1,2,3,4,5]
print(my_list[5])

执行一下,和我们预期的一样,会抛出索引异常。

Traceback(mostrecentcalllast):
File"F:/PythonScript/test.py",line2,in
print(my_list[5])
IndexError:listindexoutofrange

但是今天要说的肯定不是这个,而是一个你可能会不知道的冷知识。

来看看,如下这种写法就不会报索引异常,执行my_list[5:],会返回一个新list:[]。

my_list=[1,2,3]
print(my_list[5:])

哪些情况下不需要续行符

在写代码时,为了代码的可读性,代码的排版是尤为重要的。

为了实现高可读性的代码,我们常常使用到的就是续行符\

>>>a='talkischeap,'\
...'showmethecode.'
>>>
>>>print(a)
talkischeap,showmethecode.

那有哪些情况下,是不需要写续行符的呢?

经过总结,在这些符号中间的代码换行可以省略掉续行符:[],(),{}

>>>my_list=[1,2,3,
...4,5,6]

>>>my_tuple=(1,2,3,
...4,5,6)

>>>my_dict={"name":"MING",
..."gender":"male"}

另外还有,在多行文本注释中''',续行符也是可以不写的。

>>>text='''talkischeap,
...showmethecode'''

上面只举了一些简单的例子。

但你要学会举一反三。一样的,在以下这些场景也同样适用

类,和函数的定义。

列表推导式,字典推导式,集合推导式,生成器表达式。

Py2 也可以使用 print()

我相信应该有不少人,思维定式,觉得只有 Py3 才可以使用 print(),而 Py2 只能使用print ''。

今天,小明要为 Py2 正名一次。

在Python 2.6之前,只支持

print"hello"

在Python 2.6和2.7中,可以支持如下三种

print"hello"
print("hello")
print("hello")

Python3.x中,可以支持如下两种

print("hello")
print("hello")


审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 参数
    +关注

    关注

    11

    文章

    1838

    浏览量

    32263
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84753
收藏 人收藏

    评论

    相关推荐

    后悔没有早点看到:天线设计中的知识点

    Cat.1 bis R13架构,天线架构精简为单天线架构,去掉了分集接收天线,因此只需要一根天线。   知识点: Cat.1 bis相对于Cat.1的区别是,后者为两根天线(一根主天线,一根分集天线
    的头像 发表于 12-24 17:11 320次阅读
    后悔没有早点看到:天线设计中的<b class='flag-5'>知识点</b>!

    硬件工程师面试基础知识点

    皮尔斯振荡器(Pierce oscillator) 上图中,U1为增益很大的反相放大器,CL1、CL2为匹配电容,是电容三式电路的分压电容,接地点就是分压。以接地点即分压为参考点,输入和输出是反相的,但从并联谐振回路即石英
    的头像 发表于 11-21 11:04 240次阅读
    硬件工程师面试<b class='flag-5'>基础知识点</b>

    接口测试理论、疑问收录与扩展相关知识点

    本文章使用王者荣耀游戏接口、企业微信接口的展示结合理论知识,讲解什么是接口测试、接口测试理论、疑问收录与扩展相关知识点知识学院,快来一起看看吧~
    的头像 发表于 11-15 09:12 324次阅读
    接口测试理论、疑问收录与扩展相关<b class='flag-5'>知识点</b>

    品质管理基础知识

    品质管理基础知识
    的头像 发表于 11-01 11:08 365次阅读
    品质管理<b class='flag-5'>基础知识</b>

    Verilog HDL的基础知识

    本文继续介绍Verilog HDL基础知识,重点介绍赋值语句、阻塞与非阻塞、循环语句、同步与异步、函数与任务语法知识
    的头像 发表于 10-24 15:00 446次阅读
    Verilog HDL的<b class='flag-5'>基础知识</b>

    负载开关基础知识

    电子发烧友网站提供《负载开关基础知识.pdf》资料免费下载
    发表于 10-08 09:56 1次下载
    负载开关<b class='flag-5'>基础知识</b>

    全新的半导体基础知识

    《全新的半导体基础知识》首先对流行于电子书刊上数十年之久的经典半导体基础知识中存在的谬误进行了全方位的讨论,然后以半导体内部结构为抓手,以G型半导体(客供电子型半导体)、H型半导体(主供电子型半导体
    的头像 发表于 09-20 11:30 1254次阅读
    全新的半导体<b class='flag-5'>基础知识</b>

    C++语言基础知识

    电子发烧友网站提供《C++语言基础知识.pdf》资料免费下载
    发表于 07-19 10:58 7次下载

    模拟电子威廉希尔官方网站 知识点问题总结概览

    给大家分享模拟电子威廉希尔官方网站 知识点问题总结。
    的头像 发表于 05-08 15:16 1182次阅读
    模拟电子威廉希尔官方网站
<b class='flag-5'>知识点</b>问题总结概览

    一篇搞定DCS系统相关知识点

    目标。DCS系统广泛应用于各个行业,如化工、电力、制药等。在这些行业中,DCS系统可以实现对生产过程的集中监控和分散控制,提高生产效率和产品质量,降低能耗和减少环境污染,从而保证产品质量,并确保生产过程的安全可靠。 .DCS系统知识点
    的头像 发表于 03-26 18:40 922次阅读
    一篇搞定DCS系统相关<b class='flag-5'>知识点</b>

    【量子计算机重构未来 | 阅读体验】第章关键知识点

    本帖最后由 oxlm_1 于 2024-3-6 23:20 编辑 之所以将第章单独拿出来,是因为在阅读过程中,发现第知识点较多,理解起来比较耗时间。 第章的主要
    发表于 03-06 23:17

    FPGA基础知识介绍

    电子发烧友网站提供《FPGA基础知识介绍.pdf》资料免费下载
    发表于 02-23 09:45 32次下载

    鸿蒙开发【设备开发基础知识

    鸿蒙开发基础知识讲解
    的头像 发表于 01-29 18:44 1041次阅读
    鸿蒙开发【设备开发<b class='flag-5'>基础知识</b>】

    射频与微波基础知识

    射频与微波基础知识
    的头像 发表于 01-16 10:05 849次阅读
    射频与微波<b class='flag-5'>基础知识</b>

    光电极管的基础知识

    光电极管是一种基于半导体的光传感器或光传感器,用于检测和测量光的强度。它用于基于光的应用,并利用光来控制各种其他电气设备。本文详细介绍了光电极管及其各种类型的所有基础知识
    的头像 发表于 01-12 09:43 4544次阅读
    光电<b class='flag-5'>二</b>极管的<b class='flag-5'>基础知识</b>