PYTHON 学习笔记2 流程控制工具以及函数定义、匿名函数
前言
在上一节的学习中。已经介绍了几种基本类型。包括字符串的定义,以及字符串中索引、切片、字符串拼接的使用方法。以及基本的整形数据运算。一些之前都没有了解过的运算符、比如 ** 乘方 //整数除法等。这一节,我们将学习最基本的流程控制工具,比如
- if 条件判断
- for 循环
- while 循环
if-elif-else 判断
num = int(input("输入一个数字 :"))
if num > 10:
print("input > 10")
elif num >=5:
print("input >= 5")
else:
print("input < 5")
多重判断 if-elif 以及最终所有条件都不满足的时候,执行的else
输入一个数字 :7
input >= 5
while 循环
while 循环也算是一种常见的循环方式,这种循环一般要在循环体类结束循环,或者通过条件的方式让其结束。并不能无限循环下去。
a,b = 0,1
while a < 100 :
print(a,end=',')
a,b = b,a+b
print("循环结束")
a < 100作为条件体,若满足条件返回true ,则执行循环体
while-else
while-else 则是在条件块不满足的时候,只会执行一次的代码块:
a,b = 0,1
while a < 100 :
print(a,end=',')
a,b = b,a+b
else:
print("条件不满足")
print("跳出循环")
break 与 continue
- break 则停止所有循环
- continue 则跳出本次循环
- 但不会在循环被 break 语句终止时被执行
a = 0
while a < 100 :
a=a+1
if a % 2 != 0 :
continue
print("偶数",a)
通过 continue 关键词来跳过一些不需要的循环
a = 0
while a < 100 :
a=a+1
if a == 33:
break
print(a)
打印到33后,通过break 直接结束掉循环
for 循环
for in 一般用于List 列表的遍历。
>>> words = ['a','abc','abcd']
>>> for item in words :
print(item,len(item))
a 1
abc 3
abcd 4
- item 用于表示当前项
- len() 函数用于计算字符串的长度
for-else
for i in range(10):
print(i)
else:
print("循环结束")
else 则是在循环结束后(不满足条件后)执行的代码块,
当循环被break 终止后,则不会再执行else 的内容
range() 函数
range() 函数则是为了生成指定范围内的自然数,
range(5, 10)
5, 6, 7, 8, 9
# 这里的3 则表示步进
range(0, 10, 3)
0, 3, 6, 9
# 步进也可以是复数
range(-10, -100, -30)
-10, -40, -70
pass
pass 语句什么也不做。当语法上需要一个语句,但程序需要什么动作也不做时,可以使用它。
while True:
pass
print('a')
print("end")
定义函数 def
def fib(n):
result = []
a,b = 0,1
while a<n :
result.append(a)
a,b = b,a+b
return result
print("fib start")
print(fib(100))
这里我们通过定义一个函数,无需指定其返回类型,这个函数fib(n) 则是打印出0——n 范围内的斐波那契数列。若是一个无返回类型呢?
- 若函数内部不带有
return则会返回一个None
def demo():
print("no return")
print(demo())
----------------------
no return
None
在函数被调用时,实际参数(实参)会被引入被调用函数的本地符号表中;因此,实参是通过 按值调用 传递的(其中 值 始终是对象 引用 而不是对象的值)
当一个函数调用另外一个函数时,将会为该调用创建一个新的本地符号表。
默认值定义法
def other(a,b=5):
for i in range(b):
print(i,"-",a)
other(10)
-------------------------
0 - 10
1 - 10
2 - 10
3 - 10
4 - 10
定义这个函数是为了理解默认值的用法,若不传入第二个打印次数,则默认使用5次,而传入的话,按照指定次数打印。
关键词参数
关键词函数是为了更加形象的说明传入的这个参数所在的位置以及参数的具体用法,若一个函数有四五个参数,一次性传入这么多参数,难免让人看得眼花缭乱,若使用key=value 的方式传入
def other(a,b=5):
for i in range(b):
print(i,"-",a)
other(a=111,b=3)
--------------------
0 - 111
1 - 111
2 - 111
但不能同时使用两种方式,要么直接使用参数,要么使用关键词参数
特殊函数
默认情况下,函数的参数传递形式可以是位置参数或是显式的关键字参数
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
----------- ---------- ----------
| | |
| Positional or keyword |
| - Keyword only
-- Positional only
通过 / 与 * 来确定函数的传递方式
/ 后方的参数既可以用位置参数 或者是 关键词参数
/ 前方的参数必须是位置参数
* 后方的参数只能使用关键字参数
# 基本形式
def standard_arg(a):
print(a)
# 仅限位置
def pos_only_arg(a,/):
print(a)
# 仅限关键字参数
def kwd_only_arg(*,a):
print(a)
def combined_example(pos_only, /, standard, *, kwd_only):
print(pos_only, standard, kwd_only)
- 基本形式:可以传递任意形式
standard_arg('hello')
standard_arg(a ='hello')
-----------------------
hello
hello
- 仅限位置参数
pos_only_arg('world')
#以下形式会报错
#pos_only_arg(a='world')
- 仅限关键字参数
kwd_only_arg(a='python')
# 以下形式会报错,不可使用
#kwd_only_arg('python')
- 双重形式
combined_example('hello',standard='world',kwd_only='python')
combined_example('hello','world',kwd_only='python')
----------------------
hello world python
hello world python
这里注意其 / 与 * 所在的位置传递参数即可
Lambda 表达式
Lambda函数可以在需要函数对象的任何地方使用。它们在语法上限于单个表达式。从语义上来说,它们只是正常函数定义的语法糖。与嵌套函数定义一样,lambda函数可以引用所包含域的变量:
def create_fun(n):
return lambda x:x+n
f = create_fun(50)
print(f(1))
------------------
51
简单的解释一下:我们通过定义一个函数create_fun 需要传入一个n 的参数,而后我们通过return 关键字返回一个 lambda 匿名函数,这个匿名函数需要传入一个x作为参数,在匿名函数的函数体内,将外层函数传入的n与匿名函数自己的参数x 做一个相加。
f = create_fun(50) 已经创建了一个匿名函数,并且赋值给 f,现在 f 就是一个匿名函数,可以传参,通过f(1) 调用匿名函数后,1其实就是匿名函数的参数 x, 做一个相加后,则返回的就是 51
小结
通过本节的学习,我们已经了解到有关代码流程的控制、通过 if-elif-else 在不同的条件下执行不同的代码。两种不同的循环方式 for / while 以及如何定义一个函数,包括函数的返回值以及给函数传入参数的时候,需要注意的传参方式,位置传参以及key=value 形式传参。
PYTHON 学习笔记2 流程控制工具以及函数定义、匿名函数的更多相关文章
- Python学习笔记 - day4 - 流程控制
Python流程控制 Python中的流程控制主要包含两部分:条件判断和循环. Python的缩进和语法 为什么要在这里说缩进和语法,是因为将要学习的条件判断和分支将会涉及到多行代码,在java.c等 ...
- Python学习笔记:流程控制
单分支: if 条件: 满足条件后执行的代码 程序举例: leiyu=28if leiyu > 22: print("You can find girl friend..." ...
- python学习笔记(五):装饰器、生成器、内置函数、json
一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里 ...
- 【原】Java学习笔记005 - 流程控制
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 程序的流程控制(流 ...
- C#学习笔记_04_流程控制
04_流程控制 程序的执行结构: 顺序结构 分支结构 循环结构 可以通过某些特定的控制语句来控制代码的执行结构 分支流程控制 if else 基本语法 可以只有if没有else,但是不能没有if只有e ...
- JavaSE学习笔记03流程控制
Java流程控制 1.顺序结构 java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句往下执行. 顺序结构是最简单的算法结构,它是任何一个算法都离不开的一种基本算法结构. 2. 选择结构 ...
- Java学习笔记五——流程控制
分支结构 Java提供了两种常见的分支控制结构:if语句和switch语句. if语句 if语句使用布尔值或布尔表达式(表达式结果为布尔值),if语句有3中形式: 第一种形式: if (5 > ...
- 【原】Java学习笔记007 - 流程控制
package cn.temptation; public class Sample01 { public static void main(String[] args) { // for循环 // ...
- 【原】Java学习笔记006 - 流程控制
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:写一万次&q ...
随机推荐
- 在GeneXus开发过程中如何进行自动化测试?
1. 简介 GXtest是基于专门为GeneXus平台开发的应用程序提供的自动化测试解决方案. 我们强调“解决方案”和“自动化”两个词: 解决方案:GXtest为整个GeneXus软件开发生命周期提供 ...
- rabbitmq系列(二)几种常见模式的应用场景及实现
一.简单模式 原理:生产者将消息交给默认的交换机,交换机获取消息后交给绑定这个生产者的队列(投递规则为队列名称和routing key 相同的队列),监听当前队列的消费者获取信息并执行消费逻辑. 场景 ...
- wannafly camp day1
题目描述: 恬恬的生日临近了.宇扬给她准备了一个大 蛋糕. 正如往常一样,宇扬在蛋糕上插了nnn支蜡烛,并把蛋糕分为mmm个区域.因为某种原因,他必须把第iii根蜡烛插在第aia\_iai个区域或第 ...
- python爬虫——selenium+firefox使用代理
本文中的知识点: python selenium库安装 firefox geckodriver的下载与安装 selenium+firefox使用代理 进阶学习 搭建开发环境: selenium库 fi ...
- limit_choices_to
# 多对多 老师 teachers = models.ManyToManyField(verbose_name='任课老师', to='UserInfo', related_name="ab ...
- C++ 引用分析
引用 左值引用,建立既存对象的别名 右值引用,可用于为临时对象延长生命周期 转发引用,保持函数实参的类别 悬置引用,对象生命周期已经结束的引用,访问改引用为未定义行为 值类别,左值,纯右值,亡值 st ...
- sqlserver2008:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。
在开始菜单中找到: 进入,点击左侧SQL Server服务, 将SQL Server(MSSQL.....)服务开启, 即可成功连接.
- Beta版本
Beta版本 博客说明 这个作业属于哪个课程 http://edu.cnblogs.com/campus/xnsy/GeographicInformationScience 这个作业的要求在哪里 ht ...
- Visual studio之C#的一些常见问题01switch case常量
switch() {case CONST: break;}语句中,case后面的常量表达方法在C/C++中,switch() {case CONST: break;}语句中的CONST常常使用宏定义来 ...
- [校内训练19_09_10]sort
题意 给一个非负整数序列,每次问能否异或上一个正整数使得所有的数单调不减.如果能,输出最小的x,否则输出-1.单点修改.多测.要求最多一个log. 思考 只要考虑相邻的两个数.找到这两个数最高的不同的 ...