zoukankan      html  css  js  c++  java
  • Python学习笔记4——函数

    函数

    1 # 函数需要先定义,关键字 def
    2 def func():
    3     print("我是一个函数")
    4 
    5 # 函数的调用
    6 func()

    执行结果:

    我是一个函数

    内建函数(内置函数)

    help(), print(), format(), ...

    # 查找函数帮助文档
    # 1,用help函数
    help(print)

    Help on built-in function print in module builtins:

    print(...)
    print(value, ..., sep=' ', end=' ', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file: a file-like object (stream); defaults to the current sys.stdout.
    sep: string inserted between values, default a space.
    end: string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

    # 打印九九乘法表,【这里有的没有对齐,以后学会后更新】
    for row in range(1, 10):
       # 打印一行
        for col in range(1, row+1):
          print("{0}x{1}={2}".format(col,row,row * col), end=" ")
       # 换行
       print()

    1x1=1
    1x2=2 2x2=4
    1x3=3 2x3=6 3x3=9
    1x4=4 2x4=8 3x4=12 4x4=16
    1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
    1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
    1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
    1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
    1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81

    # version 2.0 使用函数
    def print_a_line(row):
    # 打印一行
    for col in range(1, row+1):
    print("{0}x{1}={2}".format(col,row,row * col), end=" ")
    # 换行
    print()
    # 调用函数
    for row in range(1, 10):
    print_a_line(row)

    函数的参数、返回值

    推荐查看:Python进阶04 函数的参数对应!!

    推荐:老师讲课博客目录,这个厉害了,好多python博客文章!

      -形参:占位

      -实参:调用函数时输入的值

    -返回值:函数的执行结果

      -关键字:return,没有默认返回None

      -执行return语句后,无条件返回

    def hello(person):
      print("{},你怎么了?".format(person))

    man = "嗨"
    hello(man)

    嗨,你怎么了?

    def hello(person):
      print("{},你怎么了?".format(person))
      return "我没事。"
    man = "嗨"
    hello(man)

    嗨,你怎么了?

    我没事。

     普通参数or位置参数

       调用时,具体值参考的是位置,按位置赋值

    默认参数

       形参带有默认值;如果调用时没有对相应形参赋值,则使用默认值

    关键字参数

      一般实参和形参只按照位置一一对应即可,而使用关键字参数,可以不考虑参数位置

    # 关键字参数案例
    def stu(name, age, addr):
        print("I am a student")
        print("我叫{0},我今年{1}岁了,我住{2}。".format(name, age, addr))
        
        
    n = "小明"
    a = 18
    addr = "学校"
    
    # 普通参数,只按照位置传递,容易出错
    stu(a, n, addr)
    
    print("************************")
    def stu_key(name="No name", age=0, addr="No addr"):
    print("I am a student")
    print("我叫 {0}, 我今年 {1}岁了, 我住{2}".format(name, age, addr)) n = "小明" a = 18 addr = "学校"


    #
    关键字参数
    stu_key(age=a, name=n)
    print("************************")
    stu_key(addr=addr)

    执行结果:

    I am a student
    我叫18,我今年小明岁了,我住学校。

    ************************

    I am a student
    我叫 小明, 我今年 18岁了, 我住No addr
    ************************
    I am a student
    我叫 No name, 我今年 0岁了, 我住学校

    可变参数    *  ,  **

    也有称收集, 包裹 对应 解包裹,及 混合使用 参见:python的位置参数、默认参数、关键字参数、可变参数区别

    一般使用 *args 和 **kwargs, args、kwargs可变

    def stu(*args):
        for item in args:
            print(item)
    # 这里 args 格式是 元组 tuple
    
    stu(16, 18, "A") 
    stu(19)
    stu()
    print("B")

    执行结果:

    16
    18
    A
    19
    B

    def func(**kwargs):
        for k,v in kwargs.items():
            print(k,"---",v)
    # 这里 kwargs 格式是 字典 dict
    # 关键字参数形式
    func(age=18,b="B",c=3,d="D")

    age --- 18
    b --- B
    c --- 3
    d --- D

    这里有个自己遇到的坑:input()返回结果都只是一个字符串

    def test(*args):
        print(args)
        print(len(args))
    
    # 仔细对比下面两句
    
    test(1,2,3)
    # 输出 args 和它的长度:
    # (1,2,3)
    # 3
    
    test(input())
    # 输入 1,2,3
    # 会输出:
    # ('1,2,3',)
    # 1

    函数文档

    作用是提供函数相关参考信息

    写法:在函数开始的第一行使用三引号字符串定义符,具有特定格式

    查看:使用help(),或者使用doc

    # 文档案例
    def func(name, age=18, *args, **kwargs):
        '''
        这是第一行
        这是第二行
        这是第三行
        '''
        pass# 查看函数文档
    help(func)
    print("*" * 20)
    func.__doc__
    print(func.__doc__)

    Help on function func in module __main__:

    func(name, age=18, *args, **kwargs)
    这是第一行
    这是第二行
    这是第三行

    ********************

    这是第一行
    这是第二行
    这是第三行

  • 相关阅读:
    PC端网站微信扫码登录
    H5微信授权登录
    Taro -- Swiper的图片由小变大3d轮播效果
    vue,一路走来(17)--vue使用scss,并且全局引入公共scss样式
    vscode 黑屏及类名报错解决方案
    js的cookie写入存储与读取
    常用正则表达式
    JS获取当前时间戳的方法
    URL的截取问题
    cookie的基本用法案例
  • 原文地址:https://www.cnblogs.com/xv-shilin/p/9584399.html
Copyright © 2011-2022 走看看