函数的定义及其扩展

一、函数是组织好的,可重复使用的,用来实现独立功能的代码段。函数可以提高程序代码的重用率。
1.函数的格式
不带参数和返回值函数 def 函数名():
…代码…
带参数的函数 def 函数名(参数1,参数2,…):
…代码…

带参数和返回值函数 def 函数名(参数1,参数2,…):
…代码…
return 值
下面是定义的一个函数

def dylc():
    print('1楼 西装')
    print('2楼 女装')
    print('3楼 运动装')
floor=int(input('请输入层数:'))
if floor==1:
    print('西单大悦城1楼欢迎你')
    dylc()
    print('你现在1楼')
elif floor==2:
    print('西单大悦城2楼欢迎你')
    dylc()
    print('你现在2楼')
elif floor==3:
    print('西单大悦城3楼欢迎你')
    dylc()
    print('你现在3楼')
elif floor==4:
    print('西单大悦城3楼欢迎你')
    dylc()
        print('你现在4楼')

函数的调用: 函数名()
函数必须先定义后调用。
二、定义带参函数
(1)调用的时候,这个函数定义时有几个参数,就需要传递几个参数参数值和参数名称是按函数声明中定义的的顺序匹配起来的。

def jiafa(a,b):  #定义函数  a,b是形参
       c=a+b
      print('{}+{}={}'.format(a,b,c))
iafa(2,4) #调用函数    2,4是实参
jiafa(5,6)

运行结果6
11


def qiuhe(a,b):
    c=a+b
    return c #返回c
x=qiuhe(5,6)  #调用求和函数把值赋给x
if x>10:
    print('金额>10奖励')
else:
    print('不打折')

运行结果
金额>10奖励

def jisuan(a,b):
    c=a+b
    d=a-b
    e=a/b
    f=a*b
    return c,d,e,f
    x=jisuan(3,5)
print(x)
a,b,c,d=jisuan(3,5)
print(a,b,c,d)

运行结果
(8, -2, 0.6, 15)
8 -2 0.6 15

默认参数在调用函数的时候,如果不给有默认值的形参传参,会自动采用默认值。当某个值变化小的时候,就可以使用默认参数。

def pt(name,age,sex='男'):
  print('我叫',name,end='\t')
  print('年龄',age,end='\t')
  print('性别',sex)
pt('张三',19)
pt('李四',29)
pt('王五',49,sex='男')
pt('刘争',19,sex='女')

运行结果
我叫 张三 年龄 19 性别 男
我叫 李四 年龄 29 性别 男
我叫 王五 年龄 49 性别 男
我叫 刘争 年龄 19 性别 女

def pt(*args):#*是代表元组
    print(args)
    for x in args:#
        print(x,end='')
    print()
pt(1,2,3,4)
pt(1,2,3,4,5,6,7,8)

运行结果
(1, 2, 3, 4)
1234
(1, 2, 3, 4, 5, 6, 7, 8)
12345678

面试题


a=3
def hanshu():#没有定义局部变量,程序会错误
    a+=5
hanshu()
print(a)

运行结果:
local variable ‘a’ referenced before assignment

变量的查找顺序
LEGB
L-LOCAL 局部
E-ENCLOSE 嵌套作用域
G-GLOBAL 全局
B-BUILT-IN 内置
作用域局部>外层作用域>当前会中的全局>pyhon内部作用域


a=100
c=1
b=20
def waibu():
    b=200
    c=2
    def neibu():
        c=300
        print(c) #LOCAL
        print(b) #ENCLOSE
        print(a) #GLOBAL
        print(max)#BUILT-IN
    neibu()
waibu()

运行结果:
300
200
100

递归函数的用法

def jiecheng(n):
    if n==1:
        return 1
    else:
        return n*jiecheng(n-1)
print(jiecheng(6))

运行结果
120

用递归函数写斐波拉契数

def fbnq(n):#斐波拉契数
    if n==1 or n==2:
        return 1
    else:
        return fbnq(n-1)+fbnq(n-2)
for i in range(1,13):
     print('第%d个月的兔子数是:'%i,fbnq(i))

运行结果
第1个月的兔子数是: 1
第2个月的兔子数是: 1
第3个月的兔子数是: 2
第4个月的兔子数是: 3
第5个月的兔子数是: 5
第6个月的兔子数是: 8
第7个月的兔子数是: 13
第8个月的兔子数是: 21
第9个月的兔子数是: 34
第10个月的兔子数是: 55
第11个月的兔子数是: 89
第12个月的兔子数是: 144

面试题

a=[lambda x:x*i for i in range(3)]
print(a[0](3))
print(a[1](3))
print(a[2](3))

运行结果
6
6
6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值