PYTHON 学习笔记2 流程控制工具以及函数定义

栏目: IT技术 · 发布时间: 4年前

内容简介:在上一节的学习中。已经介绍了几种基本类型。包括字符串的定义,以及字符串中索引、切片、字符串拼接的使用方法。以及基本的整形数据运算。一些之前都没有了解过的运算符、比如多重判断 if-elif 以及最终所有条件都不满足的时候,执行的elsewhile 循环也算是一种常见的循环方式,这种循环一般要在循环体类结束循环,或者通过条件的方式让其结束。并不能无限循环下去。

前言

在上一节的学习中。已经介绍了几种基本类型。包括字符串的定义,以及字符串中索引、切片、字符串拼接的使用方法。以及基本的整形数据运算。一些之前都没有了解过的运算符、比如 ** 乘方 // 整数除法等。这一节,我们将学习最基本的流程控制工具,比如

  • 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 形式传参。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java核心技术·卷1:基础知识(原书第9版)

Java核心技术·卷1:基础知识(原书第9版)

(美)Cay S. Horstmann、(美)Gary Cornell / 周立新、陈波、叶乃文、邝劲筠、杜永萍 / 机械工业出版社 / 2013-11-1 / 119.00

Java领域最有影响力和价值的著作之一,拥有20多年教学与研究经验的资深Java技术专家撰写(获Jolt大奖),与《Java编程思想》齐名,10余年全球畅销不衰,广受好评。第9版根据JavaSE7全面更新,同时修正了第8版中的不足,系统全面讲解Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强。 《Java核心技术·卷1:基础知识》共14章。第1章概述了Java语言与其......一起来看看 《Java核心技术·卷1:基础知识(原书第9版)》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器