栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

python定义函数,调用函数,函数参数,参数的传递方式,函数的返回值,函数说明文档,函数嵌套,变量作用域,递归,lambda表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python定义函数,调用函数,函数参数,参数的传递方式,函数的返回值,函数说明文档,函数嵌套,变量作用域,递归,lambda表达式

目录

1,定义函数

2,调用函数

 3,函数参数

4,参数的传递方式

①位置参数

②不定长参数(可变参数,用于调用时不确定参数的个数)

5,函数的返回值,递归

6,函数说明文档

7,函数嵌套

8,变量作用域

9,lambda表达式(匿名函数)


 

1,定义函数

什么是 函数?-------直接调用的

语法,def  函数名():
                      代码

什么是方法?-------需要.出来的

 ls=[]
 ls.append(1) 

2,调用函数

语法,函数名()

注意,在Python中,函数必须先定义,后调用

在Java中定义函数-------public void test(){};

python中没有修饰符,但需要关键字

不需要具备返回类型,但可以具备返回值

def test():
    print("hello world")
# 一个函数和一个代码之间要隔两行代码


def test1():
    return 123
test和test()的区别?

test是函数
test()是函数的返回值

每个函数都有返回值,如果没有定义则为None

print(test())-----函数没有返回值,因此输出为None,相当于Java里的Null
print(test)-----输出函数本身
fn=test-----把test方法赋值给fn
fn()-----输出hello world
和Java不同,python没有重载(同名不同参)
def test1():
    print("hello world")
# 一个函数和一个代码之间要隔两行代码


def test1(name:str):
    print(name)
test1("jack")
test1()

上面的代码运行会报错,test1缺少必须的name参数

 修改

def test1(name:str='jack'):
    print(name)

控制台输出jack

 3,函数参数

语法,def  函数名(参数名1,参数名2):
                       代码

调用有参的函数,参数名(参数值1,参数值2)

形参:参数名1,参数名2
实参:参数值1,参数值2

def fn1(a:int,b:int):
    print(a+b)
def fn1(a:int,b:int):
    print(a**b)
# 默认值参数必须在最后
def fn1(b:int,a:int=2):
    print(a+b)

fn1(2,3)                输出5
fn1(b=2,a=3)                输出5
fn1(2)                输出4

# 形参和实参

# a,b就是形参,定义了但是没有具体值

def test(a,b):

         pass

# 实参

 test(1,2)

 # 形参和实参是通过位置来对应的

 # 形参位置倒换

test(a=1,b=2) 

4,参数的传递方式

①位置参数

调用函数时根据函数定义的参数位置来传递参数

注意:传递和定义参数的顺序及个数必须一致

两个参数比较大小

def max(a,b):
    return a if a>b else b
print(max(1,2))

②不定长参数(可变参数,用于调用时不确定参数的个数)

包裹位置传递,语法,def  函数名(*args):
                                         代码

函数返回值为:元组

包裹关键字传递,语法,def  函数名(**kwargs):
                                               代码

函数返回值为:字典

多个参数,

java中 public void add(int ..is)
python中的可变参数,一个*号,代表可变参数
def max(*ns):
    print(ns)


max(1,2,3,4,5,6,7,8)

控制台输出(1, 2, 3, 4, 5, 6, 7, 8),说明放在元组中

# 接收到字典类型dict---map
def show(**ps):
    # print(ps)
    #字典取键
    for i in ps.keys():
        print(type(i))
    # 字典取值
    for i in ps.values():
        print(type(i))
    # 取元组
    for i in ps.items():
        print(type(i))
    # 取键和值
    for i in ps.items():
        print(i[0],i[1])


show(name=1,sex='男',age=12)

控制台输出










name 1
sex 男
age 12

 

5,函数的返回值,递归

 返回单个值,语法,def  函数名(参数名1,参数名2):
                                       return 结果

                      调用   变量名接受 = 函数名(参数值1,参数值2)

返回多个值,语法,def  函数名(参数名1,参数名2):
                                       return 结果1,结果2

递归,函数内部,自己调用自己

def max(*ns):
    my_sum=0
    my_max = ns[0]
    my_min = ns[0]
    for i in ns:
        my_sum+=i
        if i>my_max:
            my_max=i
        if i < my_min:
            my_min = i
#     print(my_sum,my_max,my_min)
# 
# 
# max(1, 2, 3, 4, 5, 6, 7, 8)        ---输出36 8 1
# 放集合里
    return [my_sum,my_max,my_min]        ---输出[36, 8, 1]
    return my_sum, my_max, my_min        ---输出(36, 8, 1)


print(max(1, 2, 3, 4, 5, 6, 7, 8))        ---输出(36, 8, 1)
# 元组拿值取值
a,b,c=max(1, 2, 3, 4, 5, 6, 7, 8)
print(a,b,c)        ---输出36 8 1

6,函数说明文档

语法,def  函数名(参数):
       """函数的说明文档内容"""
       函数体
       return 返回值

使用,help(函数名)

注意,函数的说明文档,建议对参数和返回值做说明

 def test(a:int,b:int):
     """
     对两个数字进行增加操作
     :param a:第一个
     :param b:第二个
     :return:什么都不返回
     """
     pass

 help(test)

7,函数嵌套

函数嵌套,函数中调用函数

# 函数嵌套
def fb(n:int):
    if n==1 or n==2:
        return 1
    return fb(n-1)-fb(n-2)

# 1 1 2 3 5 8 13 21....
print(fb(4))

8,变量作用域

局部变量,在函数体内部

全局变量,在函数体外

在函数体中修改全部变量的值:

错误做法:在函数体中,直接使用 全局变量名 = 新值

注意:这种做法,只是重新声明了一个局部变量,变量的名字和全局变量一样,但是修改不了全局变量的值

正确做法:①. 声明全局变量,global 变量名

                  ②.修改全局变量的值,变量名 = 变量值

a=1
def test():
    global a #引用全局变量a
    a=3
    print(a)

test()
print("--",a)

控制台输出

3
-- 3

9,lambda表达式(匿名函数)

如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化

语法,变量名 = lambda 参数列表:表达式/返回值。

注意:参数可以省略

参数形式:无参数,一个参数,默认参数,可变参数(*args,**kwargs)

带判断的lambda:返回值中使用 三元运算符

列表内字段数据进行排序

语法:列表.sort( key = lambda x:x['排序的列'])------升序

          列表.sort( key = lambda x:x['排序的列'],reverse=True)-----降序

# lambda  函数简写:
# js中:()=>{}
# java中:也有()->{}
# python中:1,必须有返回值,2,只有一条语句
def add(a,b):
    return a+b
# 接收的参数:返回值
fn=lambda a,b:a+b

print(add(1,2))
print(fn(1,2))

# lambda完成两数比较
fn=lambda a,b:a if a>b else b
print(fn(1,2))

fn=lambda :'你好'
print(fn())

控制台输出

3
3
2
你好

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754364.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号