铁乐学Python_day09_函数
今天我们来学习函数。
产生的原由,若没有函数,会显得重复代码多,可读性差,也会造成重复造轮子的情景。
故产生了函数,用来封装好一个功能,它是以功能为导向的。
1、【函数的样式】
例如自己定义一个函数:
def my_len():
def python中的关键字,用来声明和定义一个函数;
my_len 函数名,命名规范与变量命名的一样;
def与函数名中间要隔一个空格;
函数名+"()"+":",括号加冒号,括号里填的要你想要设置函数调用者传递的参数;
紧接着就是缩进的函数体(主要功能实现部分);
例,以下自定义的计算可迭代对象元素长度的函数:
my_len():
def my_len(l):
count = 0
for i in l:
count += 1
return count
li = [1, 2, 3, 4, 5]
print(my_len(li))
函数的执行,函数名+"()"就会去调用执行。
函数的返回值,定义函数时,不要在函数中写print语句(调试的时候可以这么做),因为函数是以功能为导向的,需要返回输出的值时使用return将值返回给函数的调用者就可以了。
在函数当中遇到return时就会结束执行函数(结合if语句用就会有像循环中break的感觉)。
函数返回的值有以下几种:
1)无return语句,返回None;
2)使用了return,返回None;
3)return指定返回一个值,该值是什么,就直接返回给函数调用者;
4)return返回多个值,将多个值放置到一个元组中,返回给函数调用者。
2、【三元运算】
例,在以下自定义一个用于比较两个整数大小的函数体中,就使用了三元运算:
# 普通的比较两数大小,谁的值大返回谁的函数:
def max_min(a, b):
if a > b:
return a
else:
return b
print(max_min(290,355))
# 使用了三元运算优化代码:
def max_min(a,b):
return a if a > b else b
print(max_min(45, 56))
retrun a if a > b else b 的意思是判断如果a > b 就返回a,否则返回b。
3、【函数的传参】
分两大方面:实参和形参。
上例中的max_min(45,56)这里的45和56就属于实际传递过去的参数,所以就是实参;
而def中定义函数时出现的max_min(a,b)中的a,b就属于形式上的参数,用于对应参考的,就是形参。
实参角度:
1、位置传参,与形参的位置与个数一一对应,按顺序,个数不能少也不能多;
2、关键字传参,同样与形参一一对应,但可以不按顺序,因为有关键字,例如上例在实参中直接填写b=56,a=45这样。
3、混合传参,就是位置参数和关键字参数混合使用,但要注意的是所有的关键字参数都要放在最后面,也就是位置参数要在关键字参数之前。
形参角度:
1、位置传参,按顺序和个数与实参形成一一对应关系;
2、默认参数,重要!设置好默认参数后,如果实参中有传递参数过来,就按照实参的参数,如果没有,就直接按照默认的预设的值。省事又灵活。默认参数永远要在位置参数的后面。
3、动态参数,今天暂时不去了解。
end
2018-3-28
铁乐学Python_day09_函数的更多相关文章
- 铁乐学python_day09_作业
练习题 1.整理函数相关知识点,写博客 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素, 并将其作为新列表返回给调用者. def odd_index(l): lis = [] for ...
- 铁乐学Python_day10_函数2
今天书接昨天的函数继续去学习了解: 昨天说到函数的动态参数. 1.函数的[动态参数] *args 动态参数,万能参数 args接受的就是实参对应的所有剩余的位置参数,并将其放在元组( )中. def ...
- 铁乐学python_Day44_IO多路复用
目录 IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO(Asynchronous I/O) IO ...
- 铁乐学python_Day43_协程
铁乐学python_Day43_协程 引子 之前我们学习了线程.进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位. 按道理来说我们已经算是把cpu的利用率提高很多了. ...
- 铁乐学python_Day42_线程池
铁乐学python_Day42_线程池 concurrent.futures 异步调用模块 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor: ...
- 铁乐学python_Day42_锁和队列
铁乐学python_Day42_锁和队列 例:多个线程抢占资源的情况 from threading import Thread import time def work(): global n tem ...
- 铁乐学python_Day39_多进程和multiprocess模块2
铁乐学python_Day39_多进程和multiprocess模块2 锁 -- multiprocess.Lock (进程同步) 之前我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发 ...
- 铁乐学python_Day38_多进程和multiprocess模块1
铁乐学python_Day38_多进程和multiprocess模块1 [进程] 运行中的程序就是一个进程. 所有的进程都是通过它的父进程来创建的. 因此,运行起来的python程序也是一个进程,那么 ...
- 铁乐学Python_Day34_Socket模块2和黏包现象
铁乐学Python_Day34_Socket模块2和黏包现象 套接字 套接字是计算机网络数据结构,它体现了C/S结构中"通信端点"的概念. 在任何类型的通信开始之前,网络应用程序必 ...
随机推荐
- 剑指offer63:数据流中的中位数
题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. ...
- Java并发编程-核心问题(1)
一.常见问题 从小的方面讲, 并发编程最常见的问题就是可见性.原子性和有序性问题. 从大的方面讲, 并发编程最常见的问题就是安全性问题.活跃性问题和性能问题. 下面主要从微观上分析问题. 二.可见性问 ...
- Linux 命令 "cp" 代码实现简介
本blog主要是模仿Linux的cp命令的功能,未实现参数,只是基础功能部分. 本文的主要目的在于练习 文件流 和 目录流 中的函数的使用. 主要功能包括两种: 源文件属性为文件,拷贝到其它文件(内容 ...
- Unity3d嵌入web网页
应用场景 程序中的界面风格 UI内容等相关内容需要很容易方便的跟新替换,不使用unity传统的热加载方式,也不想使用和H5等做混合APP的时候, 就用嵌入web来实现. 假如我想替换某个背景图,一般来 ...
- [整理]EF6.X更新了什么(版本历史中文版)
下定决心以后用EF6.x版本了.想看看有什么更新特性,结果去人家github老巢一看,EF7 for vnext,顿时蛋疼了起来.想想国内这种技术氛围,有多少还在用ASP的,有多少还在用ADO.NET ...
- 关于jquery的入门,简单的封装。
看过不同的博客,觉得以下的博客写的比较简洁明了,通俗易懂. 关于jquery博客:http://www.cnblogs.com/moqiutao/p/6523924.html 关于js:http:// ...
- java自学-运算符
上一篇介绍了java的变量和数据类型,要对数据处理,还需要用到java运算符,这里只总结下常用的,运算符主要分为以下几类:1 算数运算符 算数运算符包括: + 加法运算 - 减法运算 * 乘法运算 / ...
- POJ3414(KB1-H BFS)
Pots Description You are given two pots, having the volume of A and B liters respectively. The follo ...
- AE三维点击查询(3D Identify)的实现(转)
AE三维点击查询(3D Identify)的实现,类似ArcGIS的Identify对话框/////////////////////////////////////////////////////// ...
- vue2.0 element-ui中input的@keyup.native.enter='onQuery'回车查询刷新整个表单的解决办法
项目中用的element-ui是v1.4.3版本 实现的功能是在input中输入查询的名称,按下键盘回车键,可以查询表格中数据 问题是,我输入名称,按下回车,会整个表单刷新,搜索条件也被清空:代码如下 ...