python函数-函数初识

python函数-函数初识#

1.函数的定义#

语法

def 函数名(参数1,参数2,参数3,...):
    '''注释'''
    函数体
    return 返回的值

2.函数的使用原则---先定义后调用#

#定义阶段
def foo():
    print('from foo')
    bar()
def bar():
    print('from bar')
#调用阶段
foo()

3.函数的返回值  #

 3.1返回值的种类#

  (1)没有返回值,返回None

    ·只有return:结束一个函数的继续

    ·没有return

    ·有return None:不常用

复制代码
#只有一个return
def func():
    s = '人生苦短我用python'
    count = 0
    for i in s:
        count += 1
    return
res = func()  # 函数名加括号进行调用:func()
print(res)
复制代码

  

# 没有return
def func():
    s = '人生苦短我用python'
    count = 0
    for i in s:
        count += 1
res = func()  # 函数名加括号进行调用:func()
print(res)

 

复制代码
# 有return None:不常用

def func():
    s = '人生苦短我用python'
    count = 0
    for i in s:
        count += 1
    return None
res = func()  # 函数名加括号进行调用:func()
print(res)
复制代码

  (2)有一个返回值

          ·可以返回任何数据类型

    ·只要返回就可以接收到

    ·如果在一个函数中有多个return,只返回第一个

复制代码
def func():
    s =  '人生苦短我用python'
    count = 0
    for i in s:
        count += 1
    return count
    return  #'这是第二个return  不返回'

res = func()
print(res)

>>>12
复制代码

(3)返回多个值

  • 用多个变量接收:有多少返回值就要有多少变量接收
  • 用一个变量接收:接收到的是一个元组
复制代码
def func():
    s = '人生苦短我用python'
    count = 0
    for i in s:
        count += 1
    return s, count
res = func()  # 函数名加括号进行调用:func()
print(res)
>> > ('人生苦短我用python', 12)

res1, res2 = func()
print(res1, res2)
>>> 人生苦短我用python 12
复制代码

4.函数的参数  #

1、参数的概念  #

1.没有参数:定义函数和调用函数时括号里都不写内容

2.有一个参数:传什么就是什么

3.有多个参数:位置参数

==顺序:位置参数,*args,默认参数,**kwargs==

2.参数的种类#

1.形参的角度:

  • 位置参数:必须传,且有几个就必须传几个
  • * args:接收的是按照位置传参的值,组织成一个元组
  • 默认参数:可传可不传,不传就按默认值
  • ** kwargs:接收的是按照关键字传参的值,组织成一个字典
复制代码
# 位置参数
def name_sex(name, sex):
    print('姓名是:' + name + '\n性别是:' + sex)
name_sex('','')
>>>姓名是:乔
>>>性别是:男

# 默认参数
def name_sex(name, sex=''):
    print('姓名是:' + name + '\n性别是:' + sex)
name_sex('')
>>>姓名是:乔
>>>性别是:男

# *args---元组
def name_sex(*args):
    print(args)
name_sex('','')
>>>('', '')

# **kwargs---字典
def name_sex(**kwargs):
    print(kwargs)
name_sex(姓名='',性别='')
>>> {'姓名': '', '性别': ''}
复制代码

2.实参的角度  

  • 按位置传参:
  • 按关键字传参:
  • 按位置、按关键字混合传参:必须按照位置参数,再按照关键字传参,不能将参数赋予多个值
复制代码
# 按位置传参
def name_sex(name, sex):
    print('姓名是:' + name + '\n性别是:' + sex)
name_sex('', '')
>>>姓名是:乔
>>>性别是:男

# *按关键字传参
def name_sex(name, sex):
    print('姓名是:' + name + '\n性别是:' + sex)
name_sex(sex='',name='')
>>>姓名是:乔
>>>性别是:男

# *按位置、按关键字混合传参 必须按照位置参数,再按照关键字传参,不能将参数赋予多个值
def name_sex(name, sex):
    print('姓名是:' + name + '\n性别是:' + sex)
name_sex('',sex='')
>>>姓名是:乔
>>>性别是:男
复制代码

5、动态参数的另一个传参方式#

1、站在形参的角度上,给变量加上*,就是组合所有传来的  
def func(*args):
    print(args)

 2、站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散

unc(1,2,3,4,5)
l = [1,2,3,4,5]
func(*l)

6、默认参数的陷阱:默认参数是一个可变数据类型#

复制代码
一、
def qqxing(l = []):
    l.append(1)
    print(l)
qqxing()
qqxing([])
qqxing()
qqxing()

二、
def qqxing(k,l = {}):
    l[k] = 'v'
    print(l)
qqxing(1)
qqxing(2)
qqxing(3)
复制代码

 

  

 

posted @   流年中渲染了微笑  阅读(248)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
CONTENTS