美文网首页
2020-01-31python学习记录(2)-函数&高级语法

2020-01-31python学习记录(2)-函数&高级语法

作者: thelostworldSec | 来源:发表于2020-01-31 11:13 被阅读0次

函数:

调用函数:(内置函数、自定义函数)

类型转换int、str函数的调用

简单的例子:int('123')

定义函数:

python中定义函数使用 def 语句,依次是函数名、括号、括号中的参数,还有冒号,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

简答的额例子:

空函数:

如果想定义一个什么事也不做的空函数,可以用pass语句:

def nop():

    pass

参数检查:

通过传入参数,函数异常报错,会抛出TypeError类型报错:

返回多个值:

return x,y

小结:

定义函数时,需要确定函数名和参数个数;

如果有必要,可以先对参数的数据类型做检查;

函数体内部可以用return随时返回函数结果;

函数执行完毕也没有return语句时,自动return None。

函数可以同时返回多个值,但其实就是一个tuple

函数的参数:

普通的参数定义:

def code(x,y):

注意传入的额参数,必须按照对应的位置来传递参数。

默认参数:

def code(x,y=3):

y有默认的值是3 ,所以在传递参数的时候只需要传递一个参数就可以

可变参数:

但是调用的时候,需要先组装出一个list或tuple:

定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数:

def code(*age):

参数可以通过传入的不同的值来改变

关键参数:

**kw是关键字参数,kw接收的是一个dict。

def code(age,**number):

传参数:

参数组合:

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

小结

Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。

默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!

要注意定义可变参数和关键字参数的语法:

*args是可变参数,args接收的是一个tuple;

**kw是关键字参数,kw接收的是一个dict。

以及调用函数时如何传入可变参数和关键字参数的语法:

可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));

关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。

使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。

定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。

高级特性:

切片:取一个list或tuple的部分元素是非常常见的操作

去出来前面两个:

[L[0],L[1]]

也可以世界取:

L[0:2]

注意这个区别一下,这个取值是,取前N个元素,也就是索引为0-N的元素,但是不包括N的值,

还有第一个如果是第一,可以省略。倒数第一个索引是 -1

L[:2]

迭代:

通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。

在Python中,迭代是通过for ... in来完成。

列表生成式:

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。

1、list(range(1, 11))

2、[x for x in range(1,11)]

3、l2 = []

for t in range(1,10):

l2.append(t)

生成器:

要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generators

如果要一个一个打印出来,可以通过next()函数获得generator的下一个返回值

可以通过迭代的方打印generator

但是用for循环调用generator时,发现拿不到generator的return语句的返回值。如果想要拿到返回值,必须捕获StopIteration错误,返回值包含在StopIteration的value中:

小结:

generator是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator。

要理解generator的工作原理,它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for循环随之结束。

请注意区分普通函数和generator函数,普通函数调用直接返回结果

迭代器:

直接作用于for循环的数据类型有以下几种:

一类是集合数据类型,如list、tuple、dict、set、str等;

一类是generator,包括生成器和带yield的generator function。

这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。

可以使用isinstance()判断一个对象是否是Iterable对象

返回值 True或者False

小结:

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

参考文献:https://www.liaoxuefeng.com/wiki/1016959663602400/1017104324028448

个人知乎:https://www.zhihu.com/people/fu-wei-43-69/columns

个人简书:https://www.jianshu.com/u/bf0e38a8d400

相关文章

  • 2020-01-31python学习记录(2)-函数&高级语法

    函数: 调用函数:(内置函数、自定义函数) 类型转换int、str函数的调用 简单的例子:int('123') 定...

  • Day9总结

    1.回顾昨天学习知识: 1)字典2)集合 2.函数 1)函数语法 def 函数名():函数体 2)函数的调用 函数...

  • 第3章: 基本概念

    2020-07-30学习JavaScript高级程序设计 笔录 语法 数据类型 流控制语句 函数 3.1.1: 函...

  • Python Magic Method

    Magic Method Magic Method,魔法函数,语法为__method__,一种Python高级语法...

  • Python从入门到精通

    Python语法的三个阶段 Python基础语法函数是编程 Python进阶语法面向对象编程 Python高级语法...

  • 数据挖掘20210111学习笔记

    R语言作图 低级绘图函数建立在高级绘图函数基础上,不能单独使用 ggplot2语法 1.入门级绘图模板2.映射-颜...

  • Yii2 PHP框架

    自动加载函数 Yii2 PHP框架学习记录--自动加载函数 常量 Yii2 PHP框架学习记录-常量 $_SERV...

  • linux 函数定义与调用

    函数定义 定义语法 linux shell函数定义语法有2种,如下: 语法1 语法2 注: 不得声明形式参数,故推...

  • Excel统计函数-COUNT函数组

    一、 COUNT函数 语法:COUNT(value1, [value2], ...)。 说明:计数,记录所选区域中...

  • shell编程之函数

    1.函数的定义和语法 函数由两部分组成:函数名和函数体 语法一: 语法二: 语法三: 2.函数调用 调用:函数只有...

网友评论

      本文标题:2020-01-31python学习记录(2)-函数&高级语法

      本文链接:https://www.haomeiwen.com/subject/qtkgthtx.html