python编程语言简明教程,翻译自以下仓库:
Python-Lectures
原仓库是一系列的jupyter notebook,可以直接在jupyter环境下运行程序示例。我添加了中文注释,并改为了兼容python3

函数

创建一个函数,可以将会重复使用的代码放入一个函数中

以下是基本的函数编写格式:

def funcname(arg1, arg2,… argN):

''' Document String'''statementsreturn <value>

“funcname” 是函数名称, "arg1,arg2,…argN"是传入函数的若干参数. ‘’‘Document String’’’ 中可以写关于此函数的文档. “value” 是函数执行完成后的返回值.

print("Hey Rajath!")
print("Rajath, How do you do?")

Hey Rajath!
Rajath, How do you do?

可以把上面两句print一起写入一个函数,调用这一个函数就能print以上两行

def firstfunc():print("Hey Rajath!")print("Rajath, How do you do?")
firstfunc()

Hey Rajath!
Rajath, How do you do?

firstfunc() 现在还没有接受参数,我们也可以将某些信息当做参数传递给一个函数:

def firstfunc(username):print("Hey", username + '!')print(username + ',' ,"How do you do?")
name1 = input('Please enter your name : ') ###在接下来出现的对话框中输入文字即可

Please enter your name :

现在,输入的内容已经存入了变量name1. 我们把这个变量传递给函数 firstfunc()

firstfunc(name1)

Hey hanmoge!
hanmoge, How do you do?

我们还可以把以上步骤写入另一个函数: secondfunc() 这个函数会获取输入的文字,当做变量name,然后把name传递给 firstfunc()

def firstfunc(username):print("Hey", username + '!')print(username + ',' ,"How do you do?")
def secondfunc():name = input("Please enter your name : ")firstfunc(name)
secondfunc()

Please enter your name : hanmoge
Hey hanmoge!
hanmoge, How do you do?

函数的返回值

函数可以用return返回一些信息给函数外,例如:

def times(x,y):z = x*yreturn z

以上函数 times( ) 接受两个变量,然后把两个变量的值的乘积返回回去:

c = times(4,5)
print(c)

20

变量c储存了函数 times() 的返回值

以上是return了一个新的变量z,也可以不声明这个变量z,直接返回x乘以y

def times(x,y):'''This multiplies the two input arguments'''return(x*y)
c = times(4,5)
print(c)

20

times( ) 的文档内容,可以通过help([函数名])的方式显示:

help(times)
Help on function times in module __main__:times(x, y)This multiplies the two input arguments

return也可以返回多个变量,顺序是固定的

eglist = [10,50,30,12,6,8,100]
def egfunc(eglist):highest = max(eglist)lowest = min(eglist)first = eglist[0]last = eglist[-1]return highest,lowest,first,last

如果调用函数的时候没有将返回值赋值给一个变量,默认把所有返回值放到一个元组里。如果用变量接收函数的返回值,函数返回的值会以特定顺序分配给变量,该特定顺序在函数return语句中声明。

egfunc(eglist)

(100, 6, 10, 100)

a,b,c,d = egfunc(eglist)
print(' a =',a,'\n b =',b,'\n c =',c,'\n d =',d)
### abcd四个变量按照顺序接收了函数的返回值,即a对应highest、b对应lowest、c对应first、d对应last

a = 100
b = 6
c = 10
d = 100

隐式参数

有时候函数某个参数可能经常会被赋予某个值,这时就可以在声明函数的时候把参数的值写上,例如:

def implicitadd(x,y=3):return(x+y)

implicitadd( ) 是两数相加的函数,但可能很多时候我们只希望某个数加3,这样就可以把第二个参数先给赋值为3,第二个参数y就叫做隐式参数。

那么如果只给 implicitadd( ) 函数一个参数,就会把这个值给x,让x和3相加:

implicitadd(4)

7

但如果给足函数两个参数,那么就会用新赋予参数的值覆盖3。也就是说,隐式参数的作用是,如果不给这个参数赋值,就用写好的默认值3,如果给这个参数赋值,就用所给的值。

implicitadd(4,4)

8

任意数量的参数

如果传入函数的参数个数不确定,可以用以下这种加星号的方式,表示任何多个无名参数

def add_n(*args):res = 0reslist = []for i in args:reslist.append(i)print(reslist)return sum(reslist)

以上函数可以接受任意数量的数字作为输入(用逗号隔开),在函数内部,将这些输入的参数赋值给一个列表reslist,再返回这个列表的和.

add_n(1,2,3,4,5)

[1, 2, 3, 4, 5]
15

add_n(1,2,3)

[1, 2, 3]
6

全局变量和局部变量

在函数内部声明的是该函数的局部变量,在函数外部声明的对函数来讲是全局变量。

eg1 = [1,2,3,4,5]

在以下程序中,eg2就是thirdfunc的局部变量,很显然在thirdfunc的函数体范围外是无法访问的:

def egfunc1():def thirdfunc(arg1):eg2 = arg1[:]eg2.append(6)print("这句在函数thirdfunc里 :", eg2) print("在函数调用前 : ", eg1)thirdfunc(eg1)print("这句在函数thirdfunc外 :", eg1)   print("很显然在函数外访问函数的局部变量会报错 :" , eg2)
egfunc1()
在函数调用前 :  [1, 2, 3, 4, 5]
这句在函数thirdfunc里 : [1, 2, 3, 4, 5, 6]
这句在函数thirdfunc外 : [1, 2, 3, 4, 5]
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-26-a0aede218e7c> in <module>
----> 1 egfunc1()<ipython-input-25-116387c82a1b> in egfunc1()7     thirdfunc(eg1)8     print("这句在函数thirdfunc外 :", eg1)
----> 9     print("很显然在函数外访问函数的局部变量会报错 :" , eg2)NameError: name 'eg2' is not defined

如果在声明变量的时候,前面加上 global ,那么这个变量就变成了全局变量,可以在函数外被访问:

eg3 = [1,2,3,4,5]
def egfunc1():def thirdfunc(arg1):global eg2eg2 = arg1[:]eg2.append(6)print("这句在函数thirdfunc里 :", eg2 )print("在函数调用前 : ", eg1)thirdfunc(eg1)print("这句在函数thirdfunc外 :", eg1)print("现在在函数范围外也可以访问eg2了 :" , eg2)
egfunc1()

在函数调用前 : [1, 2, 3, 4, 5]
这句在函数thirdfunc里 : [1, 2, 3, 4, 5, 6]
这句在函数thirdfunc外 : [1, 2, 3, 4, 5]
现在在函数范围外也可以访问eg2了 : [1, 2, 3, 4, 5, 6]

Lambda 函数

Lambda函数是一类表达式,执行类似函数的功能,但并不需要声明一个函数名称. 对列表List进行操作时,Lambda函数比较方便. Lambda函数用 lambda 加变量名,再加冒号的方式使用

z = lambda x: x * x
z(8)

64

map

map( ) 依次执行对一个列表中各个元素的操作.

list1 = [1,2,3,4,5,6,7,8,9]
eg = map(lambda x:x+2, list1)
print(eg)
### 注:eg是一个map对象,本质是一个迭代器,所以可以通过for循环或者构造list来使用这个迭代器:
list(eg)

<map object at 0x7f85e4537470>
[3, 4, 5, 6, 7, 8, 9, 10, 11]

也可对两个列表进行操作:

list2 = [9,8,7,6,5,4,3,2,1]
eg2 = map(lambda x,y:x+y, list1,list2)
print(eg2)
list(eg2)

<map object at 0x7f85e4537b38>
[10, 10, 10, 10, 10, 10, 10, 10, 10]

map函数中,不仅可以用lambda函数做操作,也可以用其他python内置函数:

eg3 = map(str,list2)  ### 把list2中的每个元素转化为字符串
print(eg3)
list(eg3)

<map object at 0x7f85e4537518>
[‘9’, ‘8’, ‘7’, ‘6’, ‘5’, ‘4’, ‘3’, ‘2’, ‘1’]

filter

filter( ) 函数用来过滤列表中的元素。 filter() 返回的也是一个迭代器。

list1 = [1,2,3,4,5,6,7,8,9]

挑出所有小于5的元素:

list(filter(lambda x:x<5,list1))

[1, 2, 3, 4]

对比一下 map() 函数,同样的内容,map返回一个判断值.

list(map(lambda x:x<5, list1))

[True, True, True, True, False, False, False, False, False]

python简明教程_06相关推荐

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

    Python简明教程在线阅读地址: https://bop.molun.net/ DocStrings 该文档字符串所约定的是一串多行字符串,其中第一行以某一大写字母开始,以句号结束.第二行为空行,后 ...

  2. python程序设计简明教程知识点_《Python 简明教程》读书笔记系列一 —— 基本语法...

    基础知识 注释 注释 是 # 符号右侧的任何文本,主要用作程序读者的注释. 在程序中要使用尽可能多的有用注释: 解释假设(或者前提 / 条件) 解释重要的决定 解释重要的细节 解释你想要解决的问题 解 ...

  3. python3简明教程第二版答案_python入门简明教程?求最新的python简明教程,最好是python3的...

    本人对于计算机没有任何基础,只是简单的操作.过两天要学习python语言的基础课,需要如何准备.跪谢! 先看python的简明教程,然后可以再看<dive into python>中文版( ...

  4. 《Python简明教程》第10章在Windows下利用Haozip命令行备份文件

    在<Python简明教程>第10章中的备份程序使用的是在Linux下压缩命令.由于本人没安装Linux系统,为了实现例子10.1,便需要一个带命令行的压缩程序.国产好压软件刚好带有命令行, ...

  5. python简明教程word版-计算机开放电子书归档 2018

    97 Things Every Programmer Should Know A Java Reference (UCB CS61b Textbook) AI Cheat Sheet Advanced ...

  6. 简明python教程-Python简明教程

    Python一小时快速入门 1.Python简介 pylogo.png Python是一种相当高级的解释性程序设计语言,完成同一个任务C语言可能需要几千行代码 Java要写100行,Python可能只 ...

  7. 【实验楼】python简明教程

    ①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...

  8. 【Python简明教程二十八】PIP

    1 概述 PIP 是 Python 包或模块的包管理器. 注释:如果使用的是 Python 3.4 或更高版本,则默认情况下会包含 PIP. 2 包(Package) 包中包含模块所需的所有文件. 模 ...

  9. Python简明教程--Set

    1. 引言 在Python中,集合Set是常用的数据类型之一,本文就集合相关常见的函数和操作进行汇总,方便大家查漏补缺. 闲话少说,我们直接开始吧! 2. 相关概念 2.1 定义 集合set是具有唯一 ...

  10. python程序设计简明教程知识点_[转载]看完《python简明教程》笔记及第一个python程序...

    主要是摘抄了一些书上需要注意的地方: 1.Python 是一门解释性语言. 在计算机内部, Python 解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行. 2.版 ...

最新文章

  1. NOD32杀毒软件 №20070217(非官方版本)
  2. python 中sys.stdout.write 和 print sys.stdout的区别(转)
  3. Java多线程编程实战指南
  4. 线性复杂度的素数筛选法
  5. android wifi驱动_OTT盒子WiFi方案首选:博通2T2R WiFi模块
  6. Mysql数据库(三)——mysql数据库高级操作
  7. vue .prettierrc文件常见配置, 以及配置 Prettier - Code formatter 插件 格式化
  8. 容器编排技术 -- Kubernetes kubectl edit 命令详解
  9. editor.md七牛云上传图片springboot_spring boot 若依系统整合Ueditor,部署时候上传图片错误解决...
  10. ELasticSearch安装使用过程中遇到的坑的解决方案,以及使用Kibana操作ELasticSearch
  11. 「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四)
  12. mysql利用树建立索引_MYSQL(一)——-为什么使用B+树或者B-树做为索引结构? – 算法网...
  13. 使用注册表文件(REG)添加、修改或删除windows注册表项和值
  14. Bada IDE编译
  15. 帝国cms php替换,帝国cms怎么替换网址域名
  16. UVP Phase运行机制的补充-Phase 的raise和drop机制
  17. DDR3学习总结(二)
  18. 基于springboot+vue+Java线上教学平台( 源码+文档)
  19. 计算机资源管理器不显示桌面图标,Win7 64位系统启动后,如何解决桌面不显示图标和任务栏的问题...
  20. PyCharm敲代码光标变黑框

热门文章

  1. Catch That Cow poj3278
  2. insert php code test
  3. 很多时候,是否好好看完一本好书,对一个人的提升往往能达到质的区别
  4. 数据库-Oracle【Oracle 三种集合数据类型的比较 】
  5. VAD(Voice Activity Detection)算法详解
  6. ubunut 安装 pyqt5
  7. dmb: 数据库监控及灾备系统(for mysql)_一个备份MySQL数据库的简单Shell脚本
  8. 网络配置_Linux CentOS怎么配置网络
  9. c++ vector,list,deque,map,set,hash_map 特点及区别
  10. OpenCasCade——将鼠标点的位置转换为基于OCC三维坐标系中在某一面上的坐标