美文网首页
Python基础教程系列四:函数与模块一

Python基础教程系列四:函数与模块一

作者: 奇遇Python | 来源:发表于2019-09-25 19:06 被阅读0次

本节内容分为两部分讲涉及内容有点多:函数及模块,大纲如图所示!


4.函数和模块.png

为更好的对整篇进行理解粗略的画了此图


image.png

1、函数的定义

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
编程大师Martin Fowler先生曾经说过:“代码有很多种坏味道,重复是最坏的一种!”,要写出高质量的代码首先要解决的就是重复代码的问题。
函数的命名规则和前面讲到的变量的命名规则一样

2、调用函数

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def 函数名(参数):
        函数体
#demo
def hello():
    print('hello')
def hello1(name):
    print('hello ', name)
hello()
hello1('python')

为巩固上节知识点,给出两种用Python计算阶乘的方法(4的阶乘答案为24)

def factorial(num):
    """
    求阶乘(递归方式)
    :return: num的阶乘
    """
    if (num <= 1 ):
        return 1
    else:
        return factorial(num - 1) * num
### 当需要计算阶乘的时候不用再写直接调用已经定义好的函数
def factorial1(num):
    """
    求阶乘普通方式
    :return: num的阶乘
    """
    result = 1
    if (num <= 1):
        return 1
    else:
        for n in range(1, num + 1):
            result *= n #result =result* n
        return result
print(factorial1(4))

3、函数参数

函数可以有参数,也可以没有参数

  • 必需参数 :def demo( name,age)
  • 默认参数:def demo( age=18 )
  • 不定长参数:def demo(*args)

注意

  • 1、*args 和 **kwargs 主要用于函数定义。
    你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成 *args 和 **kwargs。 *才是必须的. 你也可以写成 *ar 和 *k 。而写成 args 和kwargs 只是一个通俗的命名约定。
  • 2、python函数传递参数的方式有两种:
    位置参数(positional argument)
    关键词参数(keyword argument)
  • 3、*args 与 **kwargs 的区别,两者都是 python 中的可变参数:
    *args: 本质是一个 tuple(任何多个无名参数)
    **kwargs :本质上是一个 dict(关键字参数)
    如果同时使用 *args 和 **kwargs 时, *args 参数列要在 **kwargs 之前。

4、匿名函数

python 使用 lambda 来创建匿名函数。
返回值就是该表达式的结果。
语法:lambda 参数:方法(或三元运算)

numLambda = lambda a, b : a + b
print(numLambda(1, 2))  #输出结果为:3
a = list(range(3))
print(list(map(lambda x: x * x, a))) # 输出结果为:[0, 1, 4]

5、迭代器

1、迭代器是访问集合元素的一种方式,可以记住遍历的位置的对象。(字符串、列表、元组、字典、集合都可以被for循环,说明他们都是可迭代的)
迭代器有两个基本的方法:iter() 生成迭代器和 next()遍历迭代器元素。
isinstance() 类型判断。isinstance(a,Iterable) 判断a 是否是可迭代对象。


listName = [1, 2, 3, 4]
nums = iter(listName)   # 创建迭代器对象
print(next(nums))   # 1输出迭代器的下一个元素
print(next(nums))   # 2输出迭代器的下一个元素
listName = [1, 2, 3, 4]
it = iter(listName)    # 创建迭代器对象
for x in it:
    print(x, end=" ")
#输出结果为 1 2 3 4
class MyNumbers:
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):
        if self.a <= 6:
            x = self.a
            self.a += 1
            return x
        else:
            raise StopIteration  # 用于表示迭代器的完成,防止出现无限循环的情况

myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))  # 1
print(next(myiter))  # 2
print(next(myiter))  # 3
for x in myiter:
  print(x)

print(isinstance([1, 2, 3], list))  # 判断数据类是否为list
#循环结果输入只能到6 输出结果为 1 2 3 4 5 6

6、生成器

使用了 yield 的函数被称为生成器

def myList(n):
      for i in range(n):
            yield(i)# 把之前的print(i) 换成yield(i)就为生成器了
print(myList(4))
for i in myList(4):
    print(i)

相关文章

  • Python基础教程系列四:函数与模块一

    本节内容分为两部分讲涉及内容有点多:函数及模块,大纲如图所示! 为更好的对整篇进行理解粗略的画了此图 1、函数的定...

  • Python基础教程系列四:函数与模块二

    今天教程大纲如下所示主讲:闭包 修饰符 模块 闭包 什么是闭包?如果在一个函数的内部定义了另一个函数,外部的函数叫...

  • python开发大全、系列文章、精品教程

    python基础教程 python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、...

  • Python——函数与模块和包

    Python函数与模块 Python中可以将函数存储在文件中,这个文件被称为模块。将模块导入到主程序中。impor...

  • Head First Python 读书笔记(二)

    第四章 :函数与模块 定义函数:def 函数注释文档 上面这种函数注释可以,下面这种函数注解是针对python3的...

  • python学习手册(第四版)(基础类型)

    python如何运行、类型与运算、控制语句、函数与参数、模块与类、异常programming python /py...

  • 05.最后任务---生成照片墙

    学习一个知识python匿名函数(lambda表达式) 参见python基础教程 了解一个函数point 准备 1...

  • 基础·函数

    Python基础教程 函数定义 小试牛刀 参数 因为python中的变量没有明确标明类型,所以函数中可以直接使用一...

  • python之sys模块

    1. 简介 sys 模块主要负责与 Python 解释器进行交互,该模块提供了一系列用于控制 Python 运行环...

  • 线程

    Python基础教程 在python中有两种线程的操作方式:函数或者用类来包装线程对象 用函数 使用 thread...

网友评论

      本文标题:Python基础教程系列四:函数与模块一

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