第8章

函数是带名字的代码块,用于完成具体的工作。

函数结构:

'''第一行的代码行使用关键字def来告诉Python你要定义一个函数。这是函数定义向Python指出了函数名,还可能在括号内指出函数为完成其任务需要什么样的信息。在这里,函数名为greet_user() ,它不需要任何信息就能完成其工作,因此括号是空的(即便如此,括号也必不可少)。最后,定义以冒号结尾。

紧跟在def greet_user(): 后面的所有缩进行构成了函数体。第二行的文本是被称为文档字符串 (docstring)的注释,描述了函数是做什么的。文档字符串用三引号括起,Python使用它们来生成有关程序中函数的文档。

代码行print("Hello!")是函数体内的唯一一行代码,

greet_user() 只做一项工作:打印Hello! 。

要使用这个函数,可调用它。函数调用让Python执行函数的代码。要调用函数,可依次指定函数名以及用括号括起的必要信息'''

defgreet_user():"""显示简单的问候语"""

print("Hello!")

greet_user()

函数参数

参数传递:

defgreet_user(username):"""显示简单的问候语"""

print("Hello!"+username.title()+"!")

greet_user('Lisa')

形参实参

在函数greet_user() 的定义中,变量username 是一个形参——函数完成其工作所需的一项信息。

在代码greet_user('jesse') 中,值'jesse' 是一个实参 。

实参是调用函数时传递给函数的信息。我们调用函数时,将要让函数使用的信息放在括号内。在greet_user('jesse') 中,将实参'jesse' 传递给了函数greet_user() ,这个值被存储在形参username 中。

注意 大家有时候会形参、实参不分,因此如果看到有人将函数定义中的变量称为实参或将函数调用中的变量称为形参,不要大惊小怪。(书中对的话)位置参数:最简单的关联方式是基于参数的顺序。这种关联方式被称为位置参数

defdescribe_pet(animal_type, pet_name):"""显示宠物的信息"""

print(" I have a" + animal_type + ".")print("My" + animal_type + "'s name is" + pet_name.title() + ".")

describe_pet('hamster', 'harry')

关键字参数:关键字参数传递给函数是名称—值对。直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆。关键字参数无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。

defdescribe_pet(animal_type, pet_name):"""显示宠物的信息"""

print(" I have a" + animal_type + ".")print("My" + animal_type + "'s name is" + pet_name.title() + ".")

describe_pet(animal_type='hamster', pet_name='harry')

默认参数:关键字参数传递给函数是名称—值对。直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆。关键字参数无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。注意:使用默认值时,在参数表中必须先列出没有默认值的参数,再列出有默认值的参数。这让Python依然能够正确地解读位置参数。

def describe_pet(pet_name, animal_type='dog'):"""显示宠物的信息"""

print(" I have a" + animal_type + ".")print("My" + animal_type + "'s name is" + pet_name.title() + ".")

describe_pet(pet_name='willie')

返回值:

函数并非总是直接显示输出,相反它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值 。

defget_formatted_name(first_name, last_name):"""返回整洁的姓名"""full_name= first_name + ' ' +last_namereturnfull_name.title()

musician= get_formatted_name('jimi', 'hendrix')print(musician)

函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。

defbuild_person(first_name, last_name):"""返回一个字典,其中包含有关一个人的信息"""person= {'first': first_name, 'last': last_name}returnperson

musician= build_person('jimi', 'hendrix')print(musician)

while和函数应用

defget_formatted_name(first_name, last_name):"""返回整洁的姓名"""full_name= first_name + ' ' +last_namereturnfull_name.title()whileTrue:print(" Please tell me your name:")print("(enter 'q' at any time to quit)")

f_name= input("First name:")if f_name == 'q':breakl_name= input("Last name:")if l_name == 'q':breakformatted_name=get_formatted_name(f_name, l_name)print(" Hello," + formatted_name + "!")

将列表传递给函数后,函数就可对其进行修改。在函数中对这个列表所做的任何修改都是永久性的。

有时候,需要禁止函数修改列表。为解决这个问题,可向函数传递列表的副本而不是原件;这样函数所做的任何修改都只影响副本,而丝毫不影响原件。

function_name(list_name[:])

虽然向函数传递列表的副本可保留原始列表的内容,但除非有充分的理由需要传递副本,否则还是应该将原始列表传递给函数,因为让函数使用现成列表可避免花时间和内存创 建副本,从而提高效率,在处理大型列表时尤其如此。

任意数量的参数

*args

**kwargs

函数的优点之一是,使用它们可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解得多。你还可以更进一步,将函数存储在被称为模块的独立文件中, 再将模块导入到主程序中。import 语句允许在当前运行的程序文件中使用模块中的代码。

#导入整个模块#import 模块名#导入模块的某个功能#from 模块名 import 功能名#别名使用as关键字#import 模块名 as 别名#导入模块所有功能#from 模块名 import *

模块导入

'''编写函数时,需要牢记几个细节。应给函数指定描述性名称,且只在其中使用小写字母和下划线。描述性名称可帮助你和别人明白代码想要做什么。给模块命名时也应遵循上述 约定。 每个函数都应包含简要地阐述其功能的注释,该注释应紧跟在函数定义后面,并采用文档字符串格式。文档良好的函数让其他程序员只需阅读文档字符串中的描述就能够使用 它:他们完全可以相信代码如描述的那样运行;只要知道函数的名称、需要的实参以及返回值的类型,就能在自己的程序中使用它。'''

View Code

python自学书籍顺序-python:入门到实践书籍学习(六)相关推荐

  1. 计算机编程书籍-Python硬件开发树莓派从入门到实践无人驾驶 AndroidTV 自动循迹

    内容简介 <Python硬件开发树莓派从入门到实践>全书可大致分为4个部分,其中第13章介绍了树莓派的基本使用:第4章介绍了如何在树莓派上使用Python的OpenCV包:第58章介绍了树 ...

  2. 《Python+Kivy(App开发)从入门到实践》自学笔记:打包——Windwos打包

    章节目录及知识点总览 6.1 Windows打包 将python程序编译成可以在windows上运行的.exe程序. 操作过程中踩过的坑: 1.书上使用的测试文件没找到(使用画板程序测试) 2.通过6 ...

  3. 《Python股票量化交易从入门到实践》随书赠送“回测框架”的使用帮助

    点击:QTYX最新版本使用指南[文字版] 点击:QTYX最新版本使用指南[视频版] 点击: QTYX历史版本更新说明 赠送"回测框架"的目的 为了帮助读者再建立一座从书本知识到实战 ...

  4. 《Python网络爬虫——从入门到实践》第六章将数据存储至MySQL数据库的学习心得与总结(出错与纠正方法)

    <Python网络爬虫--从入门到实践>第六章将数据存储至MySQL数据库的学习心得与总结(出错与纠正方法) 作为刚开始入门python的小白,对大数据,网络爬虫比较感兴趣.完全是自我修炼 ...

  5. Python自学路线图之Python基础自学

    文章目录 Python基础自学技术要点 Python自学--Python第一个程序 Python自学--条件控制语句和循环语句 Python自学--容器类型 Python自学--函数 Python自学 ...

  6. Python自学路线图之Python系统自学

    文章目录 Python自学路线图 第一阶段:Python自学路线图--Python基础自学 第二阶段:Python自学路线图--Python进阶自学 第三阶段:Python自学路线图--Web-Dja ...

  7. 自学python推荐书籍同时找哪些来实践-想学习Python爬虫,但是找不到电子书或者不知道找什么资料...

    Python学习小白必备书籍以及源码下载.代码求助网站,这个后面有说,先上推荐! 推荐入门书一<Python编程:从入门到实践> 内容简介: 本书是一本针对所有层次的Python 读者而作 ...

  8. Python学习路线,Python教程,Python入门,Python自学课程,Python学习网站

    这是一篇关于如何成为python开发者学习路线图的非常规咆哮体文章,也是一篇 Python 入门指南,针对那些没有任何编程经验,从零开始学习 Python 的同学.不管你学习的出发点是兴趣驱动.拓展思 ...

  9. python从入门到实践学习笔记_Python编程从入门到实践:学习笔记1(第二章)

    开通博客我用的理由是:读书学习时记笔记,一方面为了回顾,一方面为了督促自己.fighting! 学习Python,我买了Python编程从入门到实践. 我将从第二章开始记录我认为我以后会忘记以及重要的 ...

  10. python自学免费教程-python免费入门教程/求完整的Python入门教程

    python不错的入门学习教程或者学习路线?适合新手的 可以去菜鸟教程去学,里面有很多基础入门的教程. 不过你想深入学习的话,学马哥python, 网上有一些免费的教程,课程很系统,讲的通俗易懂 求完 ...

最新文章

  1. GridView 实现服务器端和客户端全选的两种方法
  2. vue-解决弹出蒙层滑动穿透问题
  3. Bochs调试及相关仿真工具的使用方法
  4. 022_jdbc-mysql封装JDBCUtil和抽取数据库配置参数文件
  5. Android Studio的Gradle常用命令配置和依赖管理
  6. MathType输入补集符号的步骤有哪些
  7. SCOM 2012知识分享-21:无代理管理
  8. linux cpu 实际进程,linux – 找出高CPU占用率的apache进程实际上在做什么?
  9. 秀啊,用Python快速开发在线数据库更新修改工具
  10. 前端学习(761):什么是对象为什么需要对象
  11. 解决QT5中文显示出现乱码
  12. python文件及异常处理
  13. ArcGIS JavaScript API本地部署离线开发环境
  14. 关于两个list深层遍历
  15. 2021-2025年中国制冷机行业市场供需与战略研究报告
  16. Android调用系统发送短信界面
  17. Mplayer 的编译
  18. signature=e7a4f21fa0bd38abc7e1a2451a8b7b26,进阶作业.ipynb
  19. Wannacry浅析
  20. java 获取当前年份 月份,当月第一天和最后一天

热门文章

  1. mac python request ssl错误解决
  2. FATE 集群部署 step3
  3. Bash: Removing leading zeroes from a variable
  4. Java IO流面试题
  5. Hdu 1217 最短路.cpp
  6. linux - python - 异常:error while loading shared libraries
  7. python学习笔记-练手实例
  8. awk匹配以aaa开头,以bbb结尾的内容,同时aaa和bbb之间还包含ccc
  9. 几种文件查找命令,whereis ,find ,locate.
  10. PIE.htc 让IE使用CSS3