美文网首页
Python函数

Python函数

作者: 心明道长 | 来源:发表于2018-06-12 17:28 被阅读0次

函数

  • 代码的一种组织形式
  • 一个函数一般完成一项特定的功能
  • 函数使用
    • 函数需要先定义
    • 使用函数,俗称调用
# 定义一个函数
# 只是定义的话不会执行
# 1. def关键字,后跟一个空格
# 2. 函数名,自己定义,起名需要遵循便令命名规则,约定俗成,大驼峰命名只给类用
# 3. 后面括号和冒号不能省,括号内可以由参数
# 4. 函数内所有代码缩进

def func():
    print("我是一个函数")
    print("我要完成一定功能")
print("我结束了")

函数的参数和返回值

  • 参数: 负责给函数传递一些必要的数据或者信息
    • 形参(形式参数): 在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参
    • 实参(实际参数): 在调用函数的时候输入的值
  • 返回值: 函数的执行结果
    • 使用return关键字
    • 如果没有return,默认返回一个None
    • 函数一旦执行return语句,则无条件返回,即结束函数的执行
def hello(person):
    print("{0}, 你好".format(person))
 
p = "明月"
hello(p)

参数详解

  • 参数分类

    • 普通参数
    • 默认参数
    • 关键字参数
    • 收集参数
  • 普通参数

    • 参见上例
    • 定义的时候直接定义变量名
    • 调用的时候直接把变量或者值放入指定位置
            def 函数名(参数1, 参数2,....):
                函数体
                
            # 调用
            函数名(value1, value2,.......)
            
            # 调用的时候,具体值参考的是位置,按位置赋值
  • 默认参数
    • 形参带有默认值

    • 调用的时候,如果没有对相应形参赋值,则使用默认值

            def  func_name(p1=v1, p2=v2..........):
                func_block
                
            #调用1
            func_name()
            
            # 调用2
            value1= 100
            value2=200
            func_name(value1,value2)
      

关键字参数

  • 语法

      def func(p1=v1, p2=v2.....):
          func_body
          
      调用函数:
      func(p1=value1, p2=value2.......)
    
  • 比较麻烦,但也有好处:

    • 不容易混淆, 一般实参和形参只是按照位置一一对应即可,容易出错
    • 使用关键字参数,可以不考虑参数位置

收集参数

  • 把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中

  • 语法

      def func(*args):
          func_body
          按照list使用方式访问args得到传入的参数
          
      调用:
      func(p1, p2, p3, .....)
    

收集参数之关键字收集参数

  • 把关键字参数按字典格式存入收集参数

  • 语法:

      def func( **kwargs):
          func_body
          
      # 调用:
      func(p1=v1, p2=v2, p3=v3........)
    
  • kwargs一般约定俗成

  • 调用的时候,把多余的关键字参数放入kwargs

  • 访问kwargs需要按字典格式访问

收集参数混合调用的顺序问题

  • 收集参数,关键字参数,普通参数可以混合使用
  • 使用规则就是,普通参数和关键字参数优先
  • 定义的时候一般找普通参数,关键字参数,收集参数tuple,收集参数dict

函数文档

  • 函数的文档的作用是对当前函数提供使用相关的参考信息
  • 文档的写法:
    • 在函数内部开始的第一行使用三引号字符串定义符
    • 一般具有特定格式
    • 参看案例
  • 文档查看
    • 使用help函数,形如 help(func)
    • 使用doc, 参看案例
def stu(name, age):
    '''
    这是文档的文字内容
    :param name: 表示学生的姓名
    :param age: 表示学生的年龄
    :return: 此函数没有返回值
    '''
    pass


print(help(stu))

print("*" * 20)

print(stu.__doc__)

变量作用域

  • 变量由作用范围限制
  • 分类:按照作用域分类
    • 全局(global): 在函数外部定义
    • 局部(local):在函数内部定义
  • 变量的作用范围:
    • 全局变量:在整个全局范围都有效
    • 全局变量在局部可以使用(即函数内部可以方位函数外部定义的变量)
    • 局部变量在局部范围可以使用
    • 局部变量在全局范围无法使用
  • LEGB原则
    • L(Local)局部作用域
    • E(Enclosing function locale)外部嵌套函数作用域
    • G(Global module)函数定义所在模块作用域
    • B(Buildin): python内置魔抗的作用域
# 认为a1是全局的
a1 = 100

def fun():
    print(a1)
    print("I am in fun")
    # a2的作用范围是fun
    a2 = 99
    print(a2)
    
    
print(a1)
fun()
print(a2)
# 斐波那契额数列
# 一列数字,第一个值是1, 第二个也是1, 从第三个开始,每一个数字的值等于前两个数字出现的值的和
# 数学公式为: f(1) = 1, f(2) = 1, f(n) = f(n-1) + f(n-2)
# 例如: 1,1,2,3,5,8,13.。。。。。。。。

# 下面求斐波那契数列函数有一定问题,比如n一开始就是负数,如何修正
# n表示求第n个数子的斐波那契数列的值
def fib(n):
    if n == 1:
        return 1
    
    if n == 2:
        return 1
    
    # 思考:为什么后面return能够正确执行,而不用else语句
    return fib(n-1) + fib(n-2)

print(fib(3))
print(fib(10))

相关文章

  • Python - 2017/01/28-函数

    调用python内置函数 函数名(参数) 即可调用python内置函数 help(函数名) 返回python对于函...

  • Python函数式介绍一 - 高阶函数

    Python函数式介绍一 - 高阶函数Python函数式介绍二 - 链式调用 最近为了给朋友推广Python函数式...

  • Python高阶函数学习笔记

    python中的高阶函数是指能够接收函数作为参数的函数 python中map()函数map()是 Python 内...

  • Python学习笔记1

    Python注释 Python变量 Python运算符 Python输入输出 输入函数 输出函数(3.x) ...

  • Python:内置函数

    python的内置函数,匿名函数 内置函数 内置函数就是python给你提供的,拿来直接用的函数,比如print,...

  • 二级Python----Python的内置函数及标准库(DAY

    Python的内置函数 嵌入到主调函数中的函数称为内置函数,又称内嵌函数。 python的内置函数(68个) Py...

  • python3 range() 函数和 xrange() 函数

    python3 range 函数 python3 取消了 xrange() 函数,并且和 range() 函数合并...

  • 7、函数

    1、Python之什么是函数 2、Python之调用函数 Python内置了很多有用的函数,我们可以直接调用。 要...

  • Python入门

    Python3教程 安装Python 第一个Python程序 Python基础 函数 高级特性 函数式编程 模块 ...

  • Python函数详解

    函数是Python里组织代码的最小单元,Python函数包含以下几个部分: 定义函数 调用函数 参数 函数的返回值...

网友评论

      本文标题:Python函数

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