zoukankan      html  css  js  c++  java
  • python函数内容

    在刚接触python的时候就有个疑问,什么是函数? python语言的函数和数学语言的函数有区别吗?

    什么是函数

    数学函数:给定一个数集A,假设其中的元素为x。现对A中的元素x施加对应法则f,记作f(x),得到另一数集B。假设B中的元素为y。则y与x之间的等量关系可以用y=f(x)表示

    python函数:函数就是一段事先组织好的,它具有可重复性,封装好,用来实现某个相关联功能的代码段,函数能提高应用的模块性,和代码的重复利用率。

    格式:

    复制代码
    # 未携带函数格式
    def name():    # name表示函数的名称
        print('这是个函数')    # 函数的内容
        return name    # 返回函数值
    
    name()    # 执行函数
    
    
    
    # 携带参数函数格式
    def name(name):
        print('这是个函数名',name)
        return name
    name('name')
    复制代码

    通常来说函数必须要遵循以下几点:

    • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
    • 圆括号之间可以用于定义参数。
    • 函数内容以冒号起始,并且缩进。
    • return 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

    可变与不可变传参

    传不可变参数

    复制代码
    # 传不可变参数
    def name(a): a = 20 print(a) b = 10 name(b) # 结果为20 print(b) # 结果为10
    复制代码

    传可变参数

    复制代码
    def changeme( mylist ):
       mylist.append([1,2,3,4])
       print( "函数内取值: ", mylist)
       return
    
    # 调用changeme函数
    mylist = [10,20,30]
    changeme( mylist )
    
    执行结果:
    函数内取值:  [10, 20, 30, [1, 2, 3, 4]]
    复制代码

    不可变:整数、字符串、元组

    可变参数:字典,列表

    全局变量和局部变量

    复制代码
    name = 'AnJing'
    def name_01(name):
        print('现在我的名字是:',name)
        name = 'test'
        print('现在我的名字是:',name)
    
    name_01(name)
    print('外面我的名字是:',name)
    
    执行结果:
    现在我的名字是: AnJing
    现在我的名字是: test
    外面我的名字是: AnJing
    复制代码

    定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域,局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中

    函数之间的调用

    复制代码
    def jiafa(a,b):
        '''加法'''
        c = a + b
        return c  # 返回C
    
    def jianfa(c):
        '''减法'''
        d  = 2
        s = c -d
        print(s)
    c = jiafa(2,3)    # 调用函数加法
    jianfa(c)    # 调用函数减法
    
    执行结果:
    3
    
    加法函数返回值赋给C,函数减法接受参数C进行完成减法操作
    复制代码

    非固定参数

    若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数,引入*args,**kwargs

    复制代码
    # *args
    def name(name,*args):
        print(name,args)
    name('AnJing','test',123)
    
    执行结果:
    AnJing ('test', 123)
    
    这个时候会发现*args 传入的内容会变成一个元祖
    
    # **kwargs
    def name(name,**kwargs):
        print(name,kwargs)
    name('AnJing',it='test',age=123)
    
    执行结果:
    AnJing {'it': 'test', 'age': 123}
    
    这个时候会发现**kwargs传入的内容会变成一个字典
    复制代码

     

    递归

    函数之间可以进行调用,那么函数本身也可以进行调用,这种函数我们叫做递归 

    复制代码
    # 递归函数
    def calc(n):
        print(n)
        if int(n/2) ==0:
            return n
        return calc(int(n/2))
    
    calc(10)
    
    执行结果:
    10
    5
    2
    1
    复制代码
     
    分类: python基础
     
     
    来源:
    测试-安静    https://www.cnblogs.com/qican/
     
     
  • 相关阅读:
    握手挥手状态(转)
    牛客笔记
    Redis常见面试题
    SpringBoot整合Redis及Redis工具类撰写(转)
    Netty中FastThreadLocal源码分析(转)
    计算机网络各层涉及协议(转)
    计算机小网络小笔记
    数据库
    操作系统提供的接口
    可重入锁和不可重入锁
  • 原文地址:https://www.cnblogs.com/rxxbb123/p/14234195.html
Copyright © 2011-2022 走看看