欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python函数的定义

程序员文章站 2024-02-12 15:59:40
...

函数

函数定义

#!/usr/bin/evn python3
#-*- coding:UTF-8 -*-

    import math           
    #调用math数据包 math.pi  math.sin()  math.cos()  math.sqrt()
    def my_abs(x):        
    #def 函数名 括号 参数 冒号
        if not isinstance(x, (int, float)):     #参数类型检查
            raise TypeError('bad operand type')
        if x>=0:
            return x,math.sqrt(x)               
            #返回语句,可以返回多个值,也可以不返回(默认为None)
        else:
            return -x,x                         
            #返回语句中返回的是tuple类型数据
    x,y=my_abs(30)                       
    print (x,y)
    x,y=my_abs(-30)
    print (x,y)

    def my_max(x1,x2,x3):
        pass                                    
        #pass占位符 让程序可以正常进行

函数参数

注:除了正常使用的位置参数(必选参数)外,还可以使用默认参数,可变参数和关键字参数

def enroll(name,gender,age=6,city='Beijing',*number,d,**kw):
    #name和gender是位置参数,实参与形参的个数和位置一致
    #age和city是默认参数,可传可不传实参,默认参数的对象必须是不可变对象
    #可变参数 将1个形参转化为0个或多个形参,构成1个tuple参数
    #关键字参数,就是一个dic参数,里面的关键字任意
    #命名关键字参数,就是dic参数,但其中的key是命名好的,只接受key作为关键字参数
    print('name:',name)
    print('gender:',gender)
    print('age:',age)   
    print('city:',city) 
    sum=0
    for n in number:
        sum=sum+n*n
    sum=sum+age
    print(sum)
    print(d)
    print(kw)

    number=[1,2,3,4,5]
    dic={'d':11,'job':'Beijing','livingtime':8}
    enroll('Lihua','F',6,'Shanghai',*number,**dic) 
    enroll(*number,**dic)
    # × 将一个实参转化为0个或多个实参
    # ×* 将一个实参转化为0个或多个实参

递归函数

#尾递归是指,在函数返回时,调用自己本身,并且,return语句,不能包含表达式。
def fact(n):
    return fact_iter(n,1)
def fact_iter(num,product):
    if num ==1:
        return product
    return fact_iter(num-1,num*product)
print (fact(5))
#尾递归是用来解决栈溢出问题(但python标准的解释器没有对尾递归做优化)
相关标签: python 函数