python之函数秘术

函数

所谓函数们就是为一段实现特定功能的代码“取”个名字,
以后即可通过盖名字来执行(调用)这段代码。

从逻辑上看,函数相当于一个黑匣子。
在这里插入图片描述
函数定义的3条铁律
函数需要几个关键的、需要动态变化的数据,这些数据就应定义函数的参数。
函数需要传出去几个重要的数据(就是调用该函数的人希望得到数据),这些数据应该定义返回值。
函数内部实现过程。
函数语法
在使用函数之前必须先定义函数,定义函数的语法格式如下:
def 函数名(形参列表):
//由零条到多条可执行性语句组成的函数
[return[返回值]]
无参数的函数

def first():
   #原来学习的定义变量,赋值,运算,输出,分支,循环,全部都可以写在函数里
    print("first函数")
    for i in range(5):
        print('i的值:',i)
#只要调用函数,函数中的代码就会执行一次
first()
#之啊哟执行函数,函数体的代码就可以被重复调用(复用)
first()

有参数的函数

def max (a, b):
    r = a if a>b else b
    #返回值
    return r
#返回值的意思就是当程序调用之后,会得到N个值
x = max(5, 30)
print(x)

为函数提供文档
只要把一段字符串放在函数声明之后、函数体之前,这段字符串就是当函数的说明文档。
Python内置help()函数查看其他函数的帮助文档
也可通过函数的__doc__属性来查看寒素的说明文档

def test (a):
    '''
    test函数的说明,这是我们简单函数
    :param a: a- 代表什么意思
    :return: 代表说明意义
    '''
    #空语句
    pass
print(test.__doc__)

多返回值函数
多返回值,本质就是返回元组。

程序既可返回元组,也可直接返回多个值(系统会自动将其封装成元组)

import random
#希望该函数返回三个随机的大写字符
def test ():
    c1 = chr(random.randint(65,90))
    c2 = chr(random.randint(65, 90))
    c3= chr(random.randint(65, 90))

    #以元组形式返回
    return (c1,c2,c3)
    return c1, c2, c3

多返回值函数的用法
既可用单个变量(元组)来获取
也可用多个变量来获取(元组解包)

import random
#希望该函数返回三个随机的大写字符
def test ():
    c1 = chr(random.randint(65,90))
    c2 = chr(random.randint(65, 90))
    c3= chr(random.randint(65, 90))

    #以元组形式返回
    return (c1,c2,c3)
    return c1, c2, c3

r = test()#r就是一个元组
print(r)

print(test())#元组
#多返回值函数,即可用多个变量来接受返回值,也可用单个变量来接收返回值
#多个变量,执行自动解包
c1, c2 ,c3 = test()
print(c1)
print(c2)
print(c3)

*c1, c2 =test()
print(c1, c2)

递归函数
函数体内调用它自身,被称为函数的递归。
函数递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。
无注意的递归

def foo():
    print("11111")
    print("2222")
    foo()
foo()

递归注意点
向已知的方向递归
让递归由结束的时候,不要无限递归。

#计算阶乘
def frac (n):
    if n < 1:
        print("n不能小于1")
        return
    elif n ==1:
        return 1
    else:
        #N的阶乘总是等于上一个阶乘**N
        #函数调用自身
        return frac(n - 1)*n
print(frac(int(input("请输入要计算的阶乘数:"))))

关键值参数

def info (name, age ,height):
    print("名字:",name)
    print("年龄:",age)
    print("身高:",height)
#位置参数
info('fkjava',24,183)

#关键字参数(命名参数)——不需要按顺序
#优势 ; 1,不要按顺序2,可读性高
info(age=int(input("请输入您的年龄:")),name=input("请输入您的姓名:"),height=input("请输入您的身高:"))

#混合使用
info("hjk",height=188,age=12)

#混合使用错误:关键值参数必须位于位置参数的后面
info(name='dad', 18, 177)

参数默认值
形参名=默认值
一个参数默认值

def info (age,name='jae'):
    print('name参数为:',name)
    print('age参数为:',age)
#为参数指定默认值之后,调用时候可省略为该参数只当参数值(该参数将会使用默认值)
info(23)

info(34, 'dadas')
info(13,'dasdd')
#混合方式
info(19,name='haha')

两个参数默认值

def say_hi(name='八戒',message='欢迎来减肥'):
    print('name:',name)
    print('message:',message)

say_hi()
say_hi('白骨精')
#如果你希望省略给前面的参数指定参数值,后面的参数应该用关键字参数来传入参数值
say_hi(message='欢迎加入大家庭')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值