python day5 函数基本类型

函数基本类型

无参数,无返回值
一般用于提示信息打印

def myprint():
    print('-' * 20)

无参数,有返回值
多用于数据采集中,比如获取系统信息

def mycpu():
    # 获取cpu、数据库等信息
    return info

有参数,无返回值
多用于设置某些不需要返回值的参数设置

def set (a):
    pass

有参数,有返回值
一般是计算类型的,需要参数,最终也需要返回结果

def cal(a,b):
    c = a + b
    return

全局变量和局部变量

局部变量
生效范围仅在函数内部
不同的函数,可以定义相同的局部变量,但是互不影响
用于临时保存数据,需要在函数中定义来进行存储

def printInfo():
    name='Lixiaoming'
    print('{}'.format(name))
    pass
def TestMethod():
    name='Wangxiaoming'
    print(name)
    pass
TestMethod()    # 不生效
printInfo()     # 生效

全局变量
pro作用域是整个文件,name只是在限定函数内部有用
局部变量优先于全局变量
函数内部使用局部变量修改全局变量,可以使用global 关键字声明

name='Hanmeimei'
pro='计算机信息管理'
def printInfo():
    # name='Lixiaoming'
    print('{}.{}'.format(name,pro))
    pass
def TestMethod():
    name='Wangxiaoming'
    print(name,pro)
    pass
def changeGlobal():
    '''
    修改全局变量
    :return:
    '''
    global pro  # 用局部变量修改全局变量的一个声明
    pro='市场营销'  # 局部变量
    pass
changeGlobal()
print(pro)
printInfo()
TestMethod()

函数参数引用传值


a=1  # 不可变类型
def func(x):
    print('x的地址:{}'.format(id(x)))
    print(x)
    x=2
    print('x修改后的地址:{}'.format(id(x)))
    print(x)
    pass
print('a的地址:{}'.format(id(a)))
func(a)
print(a)

可变类型
python中万物皆对象吗,在函数调用中,实参传递的本质是对象的引用
参数传递通过对象引用来完成


li=[]
def testRenc(parms):
    print(id(parms))
    pass
print(id(li))
testRenc(li)

li=[]
def testRenc(parms):
    li.append([1,2,45,4564])
    print(id(parms))
    print('内部的变量对象:{}'.format(parms))
    pass
print(id(li))
testRenc(li)

匿名函数

匿名函数
python中使用lambda关键字创建匿名函数
所谓匿名即这个函数并没有名字不用def关键字创建标准的函数
语法 lambda 参数1,参数2,参数3:执行代码语句 可以有n个参数
注意
匿名函数冒号后面的表达式以后且只有一个,是表达式而不是语句.
匿名函数自带return,return的结果就是表达式计算的结果
比如使用lambda表达式计算两个数的和

test = lambda x,y:x+y
test(1,3)
test(4,5)

换成普通函数既是:

def test(x,y):
    return x + y

普通函数

def computer(x,y):
    '''
    计算数据和
    :param x: 
    :param y: 
    :return:  
    '''
    return x+y
    pass
print(computer(10,25))

匿名函数

M=lambda x,y:x+y
print(M(23,19))    # 通过变量去调用函数

result=lambda a,b,c:a*b*c
print(result(155,12,11))


age=15
print('可以参军' if age>18 else '继续上学')

funcTest=lambda x,y:x if x>y else y
print(funcTest(12,11))

rs=(lambda x,y:x if x>y else y)(16,12)
print(rs)

varRs=lambda x:(x**2)+890
print(varRs(10))

递归函数

递归函数
如果有一个函数在内部不调用其他函数,只有自己本身,称为递归函数
递归函数必须有一个结束条件,否则报错
递归调用条件:自己调用自己,必须有一个出口(明确的结束条件)
优点:逻辑简单,定义简单
缺点:容易导致栈溢出

例如:求5!=54321
遍历方式实现5!

def jiecheng(n):
    result = 1
    for item in range(1,n+1):
        result*=item
        pass
    return result
print('5的阶乘:{}'.format(jiecheng(5)))

递归方式实现

def diguiJc(n):
    '''
    递归实现
    :param n:阶乘参数
    :return:
    '''
    if n==1:
        return 1
    else:
         return n*diguiJc(n-1)
    pass
print('5的阶乘:{}'.format(diguiJc(5)))

递归案例:树形结构的遍历

import os    #引入文件操作模块
def findFile(file_Path):
    listRs = os.listdir(file_Path) #得到该路径下面所有文件夹
    for fileItem in listRs:
        full_path = os.path.join(file_Path,fileItem)    # 组合完整文件路径
        if os.path.isdir(full_path):    #判断是否是文件夹
            findFile(full_path)  #如果是一个文件夹,再次递归
        else:
            print(fileItem)
            pass
        pass
    else:
        return
    pass
#调用搜索文件夹对象
findFile('D:\\研一上学期')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值