• 第7章 函数
  • 第8章 模块
    • 使用sys模块
  • 第9章 数据结构

第7章 函数

函数是重用的程序段。类和模块、包也是。它们是Python系统的层次构造工具。

  • 函数中的参数名称为形参,而你提供给函数调用的值称为实参。将实参传递给形参是一个隐性的赋值过程。

  • 局部变量:当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。
    这称为变量的作用域 。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。
    这意味着当我们在顶层文件中定义变量时,它就是全局变量;在函数内定义是它就是局部变量。且变量和函数一样只允许前向引用,即不能在定义之前使用它们。

  • 使用global语句声明(多个)全局变量,使得在函数中就可以改变函数外变量的值

  • 默认参数值:对于一些函数,你可能希望它的一些参数是可选的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。
    你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。注意,默认参数值应该是一个参数,而且默认参数值应该是不可变的。

    只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。

    这是因为Python语法的限制,例如,def func(a, b=5)是有效的,但是def func(a=5, b)是无效的。

  • 关键参数
    如果你的某个函数有许多参数,而你只想指定其中的一部分,那么你可以通过命名来为这些参数赋值——即使用关键字参数 ——我们使用名字(关键字)而不是位置(我们前面所一直使用的方法)来给函数指定实参。
    优势在于:

    • 由于我们不必担心参数的顺序,使用函数变得更加简单了;
    • 假设其他参数都有默认值,我们可以只给我们想要的那些参数赋值。
  • 没有返回值的return语句等价于return None,除非你提供你自己的return语句,每个函数都在结尾暗含return None语句。

  • DocStrings

    Python有一个很奇妙的特性,称为文档字符串,它通常被简称为docstrings
    DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。你甚至可以在程序运行的时候,从函数恢复文档字符串!

    • 文档字符串也适用与类和模块;
    • 我们使用__doc__调用函数对象的文档字符串属性,也可以使用help(),它所做的就是抓取函数的__doc__属性,然后整洁地展示给你。
    • 随我们的Python发行版附带的pydoc命令,与help()类似地使用DocStrings

第8章 模块

  • 在一个程序中使用函数来重用代码,如果想要在其他程序中重用很多函数,那么你该如何编写程序呢?答案就是使用模块。
  • 首先,我们将学习如何使用标准库模块。

使用sys模块

sys模块包含了与Python解释器和它的环境有关的函数。

当Python执行import sys语句的时候,它在sys.path变量中所列目录中寻找sys.py模块。如果找到了这个文件,这个模块的主块中的语句将被运行,然后这个模块将能够被你使用 。
注意,初始化过程仅在我们第一次输入模块的时候进行。

sys.argv变量是一个字符串的列表,包含了命令行参数的列表,即我们使用命令行传递给程序的参数。记住,脚本的名称总是sys.argv列表的第一个参数

sys.path包含输入模块的目录名列表。sys.path的第一个字符串是空的,这个空的字符串表示当前目录也是sys.path的一部分,这与PYTHONPATH环境变量是相同的。这意味着你可以直接输入位于当前目录的模块。否则,你得把你的模块放在sys.path所列的目录之一。

# use_sys.pyimport sys
print "The command line arguments are:'
for i in sys.argv:print iprint '\n\nThe PYTHONPATH is', sys.path, '\n'
  • 字节编译的.pyc文件:输入一个模块相对来说开销较大。而创建字节码编译的文件 ,这些文件以.pyc作为扩展名,则会快得多,因为一部分输入模块所需的处理已经完成了。另外,这些字节编译的文件也是与平台无关的,这使得Python具有跨平台的特性。而且,这样可以使我们不必将源代码也一并泄露出去。

  • 模块的__name__:每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。

    • 假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块导入的时候不运行主块,这可以通过模块的__name__属性完成。
# use_name.py
if __name__ == "__main__":print 'This program is being run by itself.'
else:print 'I am being imported from another module.'

输出:

$ python using_nam e.py
This program is being run by itself$ python
>>> import using_name
I am being im ported from another m odule

如果它是'__m ain__',这说明这个模块被用户单独运行,我们可以进行相应的恰当操作。

  • dir()函数:我们可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量
    当你为dir()提供一个模块名的时候,它返回模块定义的名称列表;如果不提供参数,它返回当前模块中定义的名称列表。

  • 关于del的一点注释——这个语句在运行后被用来删除一个变量/名称。

第9章 数据结构

在Python中有三种内建的数据结构——列表、元组和字典。

  • 列表:是处理一组有序项目的数据结构。
  • 元组:元组和字符串一样是 不可变的,元组通过圆括号中用逗号分割的项目定义。
    元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候,即被使用的元组的值不会改变。

  • 字典:

    • 注意:键必须是唯一的;
    • 注意:只能使用不可变的对象(比如字符串)来作为字典的键,但可以把不可变或可变的对象作为字典的值。
  • 序列:
    列表、元组和字符串都是序列。
    序列的两个主要特点是索引操作符和切片操作符。索引操作符让我们可以从序列中抓取一个特定项目。切片操作符让我们能够获取序列的一个切片,即一部分序列。

  • 引用:当我们创建一个对象并给它赋一个变量的时候,这个变量仅仅 引用 那个对象,而不是表示这个对象本身!
    也就是说,变量名指向你计算机中存储那个对象的内存,它等同于指针。而这被>称作名称到对象的绑定。

    在Python中,变量无类型,对象有类型,因为变量只是指向对象的引用。而Python也因为对对象类型的强调,被认为是一种强类型语言。

    记住列表的赋值语句不创建拷贝,得使用切片操作符来建立序列的拷贝

  • 更多字符串的内容

    • startwith方法是用来测试字符串是否以给定字符串开始。
    • in操作符用来检验一个给定字符串是否为另一个字符串的一部分。
    • find方法用来找出给定字符串在另一个字符串中的位置,或者返回-1以表示找不到子字符串。
    • str类也有以一个作为分隔符的字符串join序列的项目的整洁的方法,它返回一个生成的大字符串。
# str_method.py
name = 'Swaroop' # This is a string object
if name.startwith('Swa'):print 'Yes, the string starts with "Swa".'if 'a' in name:print 'Yes, it contains the string "a".'if name.find('war') != -1:print 'Yes, it contains the string "war".'delimiter = '_*_'
mylist = ['Brazil', 'Russia', 'India', 'China']
print delimiter.join(mylist)
$ python str_m ethods.py
Yes, the string starts with "Swa"
Yes, it contains the string "a"
Yes, it contains the string "war"
Brazil_*_Russia_*_India_*_China

简明Python教程第二部分7-9相关推荐

  1. 简明python教程在线-简明python教程

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. usrbinpython#hello_world.pyprinthell ...

  2. 简明python教程购买-自学Python买什么书?

    简单地总结一下: <父与子的编程之旅> /> 如果是零基础,不懂编程,甚至计算机基础都比较薄弱的.推荐一本叫做<父与子的编程之旅>,老版本叫<与孩子一起学编程> ...

  3. 简明python教程怎么买-简明python教程在哪买!《简明python教程》 下载地址?

    哪有python编程入门经典教程 给大家整理的python学习路线图,按照此教程步步的学习,肯对python有更深刻的认识.或许可以上python这个易学,精简,开源的语言.此套教程,不但有视频教程, ...

  4. 《简明python教程》笔记一

    读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info  安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...

  5. 简明Python教程笔记(一)

    此文为简明Python教程笔记. 第一部分 介绍 Python特点 简单.易学--伪代码本质 免费开源--FLOSS(自由/开放源码软件) 高层语言 可移植性强--支持多平台 解释性--更易移植 面向 ...

  6. 《简明Python教程》读书笔记

    <简明Python教程>读书笔记 开篇: 有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷,另一种是把它做得很复杂以至于找不到明显的缺陷. --C. AR. Hoare ...

  7. Python基础(简明Python教程)

    Python基础(简明Python教程) 参考简明Python教程 基本概念 注释符 # 基本数据类型 整数.长整数.浮点数(52.3E-4).复数(-5+4j) 字符串 对象 运算符 与Java基本 ...

  8. 《简明python教程》的学习笔记

    学习python的缘由 决心在一个这个寒假更加深入学习推荐系统之后,本来打算看数据挖掘导论或者是数据挖掘:概念与技术.不过在询问过一位学长之后,他推荐我看一看更加基础的书:集体智慧编程.该书所有的代码 ...

  9. 简明python教程购买-简明python教程哪版(python看什么书)

    简明 python 教程 这书 有实体书吗 有 学习Python 用哪本书好 对于零基础入门的人来说,对于Python习还是有点懵懂的,如果有一些书籍看来引导,学起来难度也会减低很多!所以向大家推荐这 ...

  10. 在Windows平台下实现《简明 Python 教程》第十章案例(利用winrar实现压缩备份)...

    在<简明Python教程>第十章,作者以一个小的脚本开发作为案例讲解Python(http://woodpecker.org.cn/abyteofpython_cn/chinese/ch1 ...

最新文章

  1. ASP.NET MVC 音乐商店 - 9. 注册和结账
  2. 通过 url 参数 parameters 和 script tag 属性来配置 SAP UI5 运行时
  3. SQL Server默认1433端口修改方法
  4. 使用ffmpeg的filter处理yuv数据包括split filter(分流)、crop filter(裁剪)、vflip filter(垂直向上的翻转)、overlay filter(合成)
  5. android通知栏如何添加按钮,如何在通知栏上放置媒体控制器按钮?
  6. Android 新建项目 页面
  7. [转]CMS Content Management System(内容管理系统) 提供商
  8. c语言 银行叫号系统,【分享】C语言 银行取票排队系统
  9. mysql 用户及权限
  10. java 获取jsessionid_如何从JSESSIONID加载Java HttpSession?
  11. 达朴汇联CEO张焱:从隐私计算出发,共建Web3.0
  12. 【DTM】HUAWEI Ads与DTM网页转化追踪(一)
  13. BAT32G137 移植threadX
  14. html间超链接怎么做,超链接怎么做
  15. java+单子_Java设计模式之单子模式应用
  16. android 11.0禁用电源键(屏蔽关机短按长按事件)
  17. 《途客圈创业记:不疯魔,不成活》导读
  18. 渗透工程师日常探测漏洞全流程 初学者必看
  19. 在线查字典/汉语字典大全/字典查询网站源码开发搭建
  20. python3学习之路 -- 7)初级练习15 - 千年虫、购物车

热门文章

  1. 大数据学习入门级书籍推荐
  2. 十大品牌去除甲醛净化器 哪个品牌好
  3. RBF神经网络和拟合实例
  4. Multisim10~14软件包及安装手册+pojie软件
  5. 无线系列-无线通信系统组成
  6. 最全最新cpu显卡天梯图_显卡天梯图,CPU天梯图汇总(大概是最全的天梯图)第三期...
  7. 计算机一级插入页眉,计算机一级考试,设置页眉为“汉字的交换码”
  8. [经验] 三星I9300recovery中文版基于CWM 6.0.1.2,支持挂载U盘
  9. 麦咖啡将投资25亿在中国内地布局超过4000家;星巴克中国咖啡创新产业园正式动工 | 美通企业日报...
  10. Kodak Preps 8 for Mac中文破解版永久激活教程