首页 > 编程语言 >Python入门知识点 8--函数基础与函数参数

Python入门知识点 8--函数基础与函数参数

时间:2024-07-28 09:53:43浏览次数:16  
标签:知识点 函数 Python args 函数参数 print 返回值 fun def

一、初识函数(function)

编程函数!=数学函数,里面的是逻辑功能,而不是套公式

编程函数的作用是实现特定操作的一段代码

有钱了给100个朋友都点一份这样的吃的,大家都是点一样的东西
    1.薯条;
    2.上校鸡块;
    3.全鸡;

一个个去点单会很麻烦
这个时候就会用到套餐
出个套餐 ,美味套餐(薯条,上校鸡块,全鸡)-->100份美味套餐

程序把一些会经常用到的代码保存起来,取个有意义的名字,以后要用直接调用就可以,就是函数

变量:保存一个/多个数据
函数:保存的是一段或者多段代码
    
函数的优点:
    1.遇到重复代码时,可以定义为函数,省事;
    2.修改起来比较方便;
    
本质:写好的一些代码,可以实现特定的功能,取个好记的名字保存起来,方便后续使用;

二、函数基础

函数的命名规则和变量是一样的:
    1.由数字,字母,下划线组成;
    2.不能数字开头,不能纯数字,不能有其他的特殊符号;
    3.区分大小写;
    4.不能用关键字,内置函数;
    5.见名知意;
    
函数如果没有特别作用,并且没想好名字,就可以取名为fun;

函数的使用分为两步:
    #先定义再调用,程序是从上往下执行
    1.声明函数;
    2.调用函数;

2.1 定义函数&调用函数

1.定义函数
    def 函数名():
        代码内容
    def fun():
        print('好好学习')
调用函数:在函数名后面加个括号,就是调用函数;
    函数名()
    fun()

def fun():
    print('好好学习')
fun()

2.声明空函数-->如果函数还没有想好内容,就先写个pass
    def 函数名():
        pass

def fun2():
   pass

三、函数参数

def fun():
    print(5+6)

fun()
函数里的数据如果是一成不变的,那很鸡肋,函数会接触到各种各样的数据,函数可以根据情况,来接收一些数据,并且在函数里处理

让函数里的内容可以更加灵活,数据不是定死的-->函数参数

形参-->没有具体的数据,只是先占个位置-->定义阶段
实参-->有具体的数据,在运行时取代形参--调用阶段

声明带参函数:
    def 函数名(形参):
        代码
        
调用带参函数
    函数名(实参)

def fun(money):
    print(f'我现在拥有{money}元了')

fun(50)
fun(100)
fun('100万')

一个萝卜一个坑,你定义了几个形参,就传几个实参,否则就会报错;

3.1 必备参数

有几个形参,就传几个实参,数量要一致;

定义时:
    def 函数名(形参1,形参2):
        代码
        
调用时:
    函数名(实参1,实参2)

def add_1(num1,num2):
    print(num1+num2)

add_1(70,80) #少写多写都会报错  

3.2 默认参数

作为一个默认的参数,在声明参数的时候就提前赋好值;

定义时:
    def 函数名(形参1,形参2=值):
        代码
        
调用时:
    函数名(实参1)

def fun(money,people='小赵'):
    print(f'{people}现在拥有{money}元了')

fun(100)
fun(50)
fun(50,'张三') #不会报错,但是 ‘张三’会覆盖原来的值‘小赵’

注意:赋值的默认参数要放在最后面,不能放前面;

3.3不定长参数(1)

有的时候可能出现,不清楚这个函数会接收多少个参数,这时候就可以用不定长参数
不定长参数可以一次性接受多个数据,接收到的数据为元组类型
不定长参数的表现形式为:*
参数名是不固定的,但是正常规范命名为*args

定义时:
    def 函数名(*args):
        代码
        
调用时:
    函数名(实参1,实参2,实参,...)

def room(*args):
    print(args) #<class 'tuple'>
    print(args[2])
    print(args[:2])
    print(args[::-1])
    print(type(args))

room('小李','小赵','胡桃','赵衍','杨航','林于','小明',1,8.8,True) 
  
def message(name,age,*args):
    print(name)
    print(age)
    print(args)
message('小王',18,'张三','哈哈','欧雅琪','小红','胡桃','赵衍','杨航')

3.4不定长参数(2)

可以一次性接受多个数据,接受的数据为键值对,得到的数据类型为字典类型,键不能为整型
不定长参数2的表现形式为: **
参数名同样不固定,但最好叫**kwargs

定义时:
    def 函数名(**kwargs):
        代码
        
调用时:
    函数名(键=值,键=值,键=值,...)  #键不用加引号

def fun2(**kwargs):
    print(kwargs)
    print(type(kwargs)) #<class 'dict'>

fun2(name='小赵',age=18)

def grade(c,m,**kwargs):
    print(c)
    print(m)
    print(kwargs)

grade(98,99,math=100,chinese=100)

def fun3(a,b,*args,**kwargs):
    print(a)
    print(b)
    print(args) #()
    print(kwargs)

fun3(5,10,math=100) #没有给args传参,所以是一个空元组();

def fun4(a,b,*args,**kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)

fun4(5,10,10,'gg','chh',math=100) #给args传内容了,所以接收的args是(10, 'gg', 'chh')  

四、返回值(return)

如果函数内只是单纯的在内部print,那它是代表没有定义返回值的
函数没有定义返回值,返回值就默认为空--None

#没有定义返回值的函数

def add_1(num1,num2):
    print(num1+num2) #没有定义返回值

add_1(70,520)
a=add_1(70,520)  #把函数的返回值赋值给a
print(a) #没有定义返回值 函数的默认的返回值为 None
#print(a+10) #不支持 空值类型不能跟整型相加

所以在函数里,一个数据如果是 print出来 那就是只能看,是不能用的,如果想要使用这个数据,需要的不是print输出,而是return返回。

return 返回值
把值返回给函数本身,可以用来使用,返回值一般是结合函数参数来使用

1.定义一个带有return返回值的函数;
    def 函数名():
        return 返回值数据
    
2.输出返回值的内容:把函数名() 用print包裹起来,这个动作达到目的就是
    print(函数名())
    1.先调用函数;
    2.输出函数的返回值;

def fun(a,b):
    return a+b

fun(3,5) #直接调用函数,不会打印返回值
print(fun(3,5)) #所以打印返回值需要print

返回值可以有多个,并且也可以输出多个返回值
小细节:
    1.返回值的类型是不限的,int/float/list/dict...都可以,也可以返回一个函数;
    2.返回值的数量是不限的,可以返回多个数据,得到的数据为元组类型;
    def 函数名():
        return 返回值1,返回值2,返回值3

def fun3():
    return '么么哒',1,True,[12,3],(1,32)

print(fun3())

 得到的返回值还有一种用法是可以把函数返回值赋值给变量
    变量=函数名() #把函数返回值赋值给变量

    def fun4(a,b):
        return a*b

    res=fun4(3,6) #把函数fun4的返回值赋值给变量res
    print(res)
    print(res+10) #返回值既能看又能用

注意:
    在return后面的代码是不会执行的,因为函数执行到return就会结束

def fun5():
    print('hh')
    return '嘻嘻'
    print('ww')

fun5()
print(fun5()) #输出返回值内容
print(fun5) #打印函数名,显示出来的是内存地址

五、内置函数(基础篇)

python自带的一些功能函数
    序列类型/散列类型/数据类型方法
    
特点:
    1.都有一个小括号;
    2.每个函数都有自己的功能;
    
len():获取数据长度
min():获取最小值
max(): 获取最大值
sum():  获取数据的和

li=[1,2,3,4,5,6,7,8,9]
print(max(li))
print(min(li))
print(len(li))
print(sum(li)) 

六、文档字符串

基于函数写的注释,看起来和注释差不多,但是可以被调用,在学函数时,更推荐写文档字符串,里面可以写:
    1.这个函数干什么用的;
    2.这个函数参数是干什么用的;
    3.返回值是干什么用的;

def fun(a,b):
    '''
    我是做加法运算的函数
    :param a:float
    :param b:float
    :return:a+b的结果
    '''
    return a+b

输出文档字符串:
    函数名.__doc__
    print(fun.__doc__)
    print(print.__doc__)

七、增加一个小练习

1.定义一个函数,内容为输出一句('人生苦短,我选python'),并调用该函数

2.定义一个函数,该函数在调用的时候会接收2个数值数据.返回值为返回里面较大的值.并调用输出

3.定义一个函数,该函数在调用的时候会接收一个元组数据,元组里的值都为数值,返回值为该参数的'长度'以及'元组里数值的和',并调用输出

4.定义一个函数,该函数在调用的时候会接收一个字符串数据,为你的名字,在声明的时候有个默认参数值为'多喝热水',函数功能为输出一句 '{你的名字}要{好好学习}' .并调用输出

5.通过函数实现一个计算器(加减乘除)
    小提醒:把加减乘除分别写成4个函数,让用户选择对应功能,数值也同样由用户输入(计算两个值之间的加减乘除的操作)

下一篇文章公布答案,也可把答案写在评论区,有什么问题欢迎随时评论或者私信哦~

标签:知识点,函数,Python,args,函数参数,print,返回值,fun,def
From: https://blog.csdn.net/2401_83315133/article/details/140674573

相关文章

  • 【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码
     ......
  • 使用 cx_freeze 时 python 库 speedtest/speedtes-cli 和 tkinter 的问题
    我编写了一个脚本来使用python/tkinter和speedtest库(speedtest/speedtest-cli)执行许多宽带速度测试。当作为普通python脚本运行时,该程序按预期工作。我可以使用cx_freeze创建一个exe文件,它会正常创建所有内容。当我运行exe文件时,我得到以下回溯...Traceback(m......
  • Codeforces Round 962 (Div. 3) A - D详细题解(思路加代码Python,C++(垃圾灰名小白想
             吐槽一下,这次比赛不知道怎么的,可能是div3参加的人比较多吗,代码题解上去后全是inqueue,比赛的过程中我还看了提交的,80多页几千个提交全是inqueue,我的代码等了**半个多小时才运行,然后发现timelimit真的有点搞心态,思路在下一题我还要反过来去优化上一题,不过......
  • python2
    第三方IDE(集成开发工具)   pycharm安装教程    ......
  • 基于python+flask+mysql徐州市天气信息可视化分析系统04600-计算机毕业设计项目选题推
    摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对天气信息等问题,对天气信息进行研究分析,然后开发设计出天气信息可视化分析系统以解决问题。......
  • 【免费领源码】Java/Mysql数据库+SSM校园兼职网站 25557,计算机毕业设计项目推荐上万套
    摘 要当今人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等活动,人类的许多社会活动正在向网络化发展。兼职......
  • 【免费领源码】Java/Mysql数据库+springboot驾校预约管理系统 25540,计算机毕业设计项
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于驾校预约管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了驾校预约管理系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种......
  • Python Beautiful Soup 不加载表值
    我是美丽汤的新手,不确定如何从该网站为每个州(新南威尔士州、维多利亚州、昆士兰州、南澳大利亚州)添加“解决”栏:https://www.asxenergy.com.au/futures_au似乎没有显示数值数据。我的起始代码是:frombs4importBeautifulSoupfromurllib.requestimportur......
  • c语言模拟Python的命名参数
    最近在书里看到的,让c语言去模拟其他语言里有的命名函数参数。觉得比较有意思所以记录一下。目标众所周知c语言里是没有命名函数参数这种东西的,形式参数虽然有自己的名字,但传递的时候并不能通过这个名字来指定参数的值。而支持命名参数的语言,比如python里,我们能让代码达到这种效......
  • 乌尔都语 Tts 可与 python 一起使用
    我想为乌尔都语创建TTS有什么帮助吗?我发现很少有模特拥抱着脸TheUpperCaseGuy/Guy-Urdu-TTSpocketmonkey/speecht5_tts_urduTalha185/speecht5_finetuned_urdu_TTS但我无法从文本创建或生成高质量的语音任何人都可以帮忙吗???importtorchfromtransformersimp......