首页/文章/ 详情

Python入门实战 | 第4期(函数)

6月前浏览6680

本期继续给大家分享Python的语法讲解,Python作为深度学习的必备工具,也是PHM初学者的必备技能。之前分享了:

Python入门实战 | Python及PyCharm安装教程

Python入门实战 | 第2期(input输入语句和if判断语句
Python入门实战 | 第3期(循环语句和高级数据类型)

这期主要是介绍Python的函数,也是Python入门学习最后一期,本专题后面推出进阶学习,主要分享matplotlib和pandas这两个入门包。

目录

一、函数

1. 函数基础知识(上)

1.1函数定义

1.2函数形式及调用

1.3函数参数

1.4函数嵌套

1.5实战示例

2. 函数基础知识(下)

2.1全局变量和局部变量

2.2函数参数的引用和传值

2.3匿名函数

2.4递归函数

3. 内置函数

3.1内置函数查询

3.2数学运算内置函数

3.3数据类型转换内置函数

3.4序列操作

3.5内置集 合函数

4. 实战演练

一、函数

1. 函数基础知识(上)

1.1函数定义

一系列Python语句的组合,可以在程序中产生一次或多次(完成具体的独立功能)。通过函数实现代码复用最大化以及最小化冗余代码,使代码整体结构清晰,问题局部化。

1.2函数形式及调用

    #形式def fun():    print('好好学习,天天向上')#调用fun()

    1.3函数参数

    a.概念

    通过返回的函数参数,输出不同信息。(参数:为了得到实现某种功能所需的外部数据)

    形参:是定义函数时在括号里定义的变量,它只是申明用的,是没有值的。  

    实参:是调用函数时传给形参的值,是有值的。实参是形参被具体赋值之后的值,参加实际的运算,有实际作用。

    示例:

      defprintInfo(name,height,weight,hobby):#形式参数:定义时候不占内存。意义上的参数  #函数代码块          print('%s的身高是%fm'%(name,height))          print('%s的体重是%fkg'% (name, weight))         print('%s的爱好是%s'% (name, hobby)) printInfo('小名',1.75,80,"唱歌")#实际参数:占用内存地址 printInfo('小美',1.65,60,"唱歌")

      b.参数分类
      必选参数:定义函数时,形参不赋值,若实参空缺则不能运行。
      默认参数:定义函数,形参赋值,若实参空缺仍能运行。
      可选参数:参数个数不确定(*arge),元组类型。
      关键字可变参数:参数是字典类型,字典键、key值是字符串(**arges)

      示例:

        def sum(*arge):      result=0      for items in arge:#注意arge是参数,sum只是个函数名          result+=items          pass      print('累加结果是%d'%result)sum(1,2,3,4,5)#参数为元组形式def keyfunc (**kwargs):      print(kwargs)      passdictA={"name":"小明","age":35}keyfunc(**dictA)#参数字典形式写法keyfunc(name="小美",age=26)#第二种写法def complexfunc(*arge,**arges):#可选参数必须放到关键字可选参数之前      print(arge,arges)      passcomplexfunc(1,2,3)complexfunc(name='小美')complexfunc(1,2,3,name='小美')

        1.4函数嵌套

        如下图所示,定义fun2函数时,fun1函数也参与运行,即在fun2函数中调用fun1,将fun1嵌套在fun2中。

        1.5实战示例

        a.写函数,接收n个数字,求和

          def Sum(*arge):    result = 0    for i in arge:        result += i    return resultprint(Sum(1, 2, 3, 4)))

          b.写函数,接收一个列表数,并找出奇数位组成新的列表。

              def listfun (a):#如何使用列表作为参数      n=len(a)#获取列表长度      m=a[0:n:2]      return m  print(listfun([1,2,3,3,4,5,7]))

            c.写函数,检查传入字典的每个value长度,大于2时,保留前两长度内容,并且将新的内容传到新的字典中。

            示例:(len()实参只能是字符串,列表,元组)                 

              def dictfun(**arge):  # 如何使用列表作为参数#    result={}    for key, value in arge.items():  # 分别去键和值           if len(value) >= 2:  # 计算字符串,列表,元组字典长度                 result[key] = value[:2]  # 保留两位添加到字典           else:                 result[key] = value    return resultprint(dictfun(name="小明", age=(2, 3, 4, 4)))

              2.函数基础知识(下)

              2.1全局变量和局部变量

              局部变量:函数内部定义的变量,为保存临时数据。
              全局变量:在 Python 代码主体中创建的变量是全局变量,属于全局作用域。全局变量在任何范围(全局和局部)中可用。
              当全局变量和局部重复定义,优先使用内部变量。使用global把局部变量变成全局变量改变。

              示例:

                  pro='电子信息'    name='小明'  grade='100'  defprintInformation():              name='xiaoming'              global grade#让grade是全局变量              grade='99'              print('{}.{}.{}'.format(name,pro,grade))      pass   printInformation()

                2.2函数参数的引用和传值  

                a.在python中,函数调用时,实参传递的就是对象的引用(地址)。  

                注意下面示例中,函数内部的处理是否会影响到函数外部的数据变化。  

                示例:

                  #内部不影响外部a=1#不可变类型int,str,元组def func(x):      print('x的地址{}'.format(id(x)))      x=2#不可变类型,数据修改后重新开辟空间      print('x修改以后的地址{}'.format(id(x)))      print(x)      passprint('a的地址:{}'.format(id(a)))func(a)print(a)#内部影响外部li=[]#可变类型字典,列表def testRenc(parms):      li.append([1,2,3,4,5])      print(id(parms))      print('内部的{}'.format(parms))passtestRenc(li)print(id(li))print('外部的{}'.format(li))

                  2.3匿名函数

                  a.形式(只有一行)

                    lambda 参数1,参数2,参数3:表达式

                    b.定义

                    匿名函数是没有名字的函数,其表达式只有一个,注意是表达式不是语句。(匿名函数自带return,return结果是表达式计算后结果)

                    注:lambda是简单表达式,不是代码块,lambda设计是为了满足简单函数场景。

                    示例

                      #传统方法求和deffun(x,y):      return x+y    print(fun(1,2))  #匿名函数求两数中最大值  n=lambda x,y:x if x>y else y #无函数名,代替传统双分支写法    print(n (2,3))#匿名函数求和    m=lambda x,y:x+y #无函数名    print(m (2,3))#匿名函数求和    k=(lambda x,y:x+y)(3,4#无函数名,直接调用,在该行完成赋值    print(k)

                      2.4递归函数

                      递归可以将复杂任务分解成更简单的子问题,函数内部需要调用自己,不像嵌套那样调用其他函数,比嵌套容易,递归函数要有明确的结束条件。

                      注:容易栈溢出,内存紧张甚至泄露

                      示例:
                      a.求7的阶乘
                        def digui(n):    if n==1:     return 1    else:     return n*digui(n-1)#此处调用自己    passprint('7的阶乘{}'.format(digui(7)))

                        b.递归查找路径里所有文件

                            import os #引入文件操作模块deffindFile(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

                          3. 内置函数

                          编程语言的核心是操作内存中的数据,内存中的数据通过编程语言的API(系统提供的函数)来实现。系统预定义即安装python自带的函数称为内置函数(内嵌函数)。重点:序列操作,Set集 合。
                          3.1内置函数查询

                          https://docs.python.org/3/library/functions.html

                          3.2数学运算内置函数

                          abs()绝对值

                          roud()四舍五入取相似值

                          pow()求幂运算

                          divmod()求余和商

                          max()求最大值

                          min()求最小值

                          sum()求和

                          eval()将字符出计算  

                          示例:

                            print(abs(-3))  print(round(3.499,1))  #3.499保留一位小数print(pow(3,3))  print(3**3)  print(divmod(7,2))  print(max([1,2,3,4,5])) #返回给定参数最大值,参数可以是序列print(max(1,2,3,4,5 ))  print(sum(range(10))) print(sum(range(10),3)) #最后结果+3a,b,c=1,2,3print('动态执行的函数={}'.format(eval('a*b+c-30')))print(eval('a+b+c',{'c':3,'a':1,'b':3}))def TestFun():    print('执行函数')    passeval('TestFun()')

                            3.3数据类型转换内置函数  

                            int()整型

                            float()浮点型

                            str()字符串类型

                            ord()字符转数字

                            chr()数字转字符;将数字(ascii码)转化为对应字符

                            bool()转换ture和flase

                            bin()十进制转为二进制hex()十进制转十六进制

                            oct()转八进制

                            list()元组转列表

                            tuple()元组

                            dict()字典  

                            bytes()转为字节数组  

                            示例:

                              tup=(1,2,3,4,5) #元组不能修改print(type(tup))li=list(tup)#元组转序列print(type(li))li.append('强制转换成功')#列表可以修改print(li)tuplist=tuple(li)#序列转元组print(type(tuplist))#字典操作dict()dic=dict()print(type(dic))dic['name']='小明'dic['age']=18print(dic)print(bytes('我喜欢python',encoding='utf-8'))#将数据转化国际标准字节

                              3.4序列操作

                              all()判断给定的可迭代参数(元组,列表)全都是ture(除了0,空,false都算ture)返回ture,否则返回false。注意空元组,空列表算特殊的ture。

                              any()只要有一项是ture返回ture,否则返回false。

                              sort()排序

                              reverse()反向列表排序

                              range()创建整数列表,用于for循环中

                                print(all(([])))#True,列表print(all(('')))#True,元组print(all([1,2,3,'']))print(any(('',1)))li=[1,6,7,8,3,4,0]#sort排序li.sort()#直接修改原始对象,所以元组不能用因为不能修改print(li)li=[1,6,7,8,3,4,0]#sort排序sorted(li)#并非在原始对象上修改,所以需要修改后赋值print(li)varlist=sorted(li)print('{}'.format(varlist))varlist=sorted(li,reverse=True)#降序print(varlist)tupArray=(33,4,5,1,)#元组类型只能用sortedvartup=sorted(tupArray,reverse=False)print(vartup)

                                zip():用来打包,按照索引把对应元素对象,压缩成一个个元组块放进列表中。

                                    def printBookInfor():    books = []    id = input('输入编号,每项空格分隔')  # str    bookname = input('输入书名,空格分隔')    bookpos = input('输入位置:空格分隔')    idlist = id.split(' ')    namelist = bookname.split(' ')    poslist = bookpos.split(' ')    bookinfor = zip(idlist, namelist, poslist)    for bookitem in bookinfor:  # 遍历图书信息存储,得到一个个列表元素即元组         dictInfo = {'编号': bookitem[0], '书名': bookitem[1], '位置': bookitem[2]}    # bookitem[0]每个元组的第0个元素         books.append(dictInfo)         pass    print(books)    for item in books:        print(item)printBookInfor()

                                  enumerate()将可遍历对象如列表,元组,字符串,字典组合成一个索引序列,  

                                  enumerate(可遍历对象,start=索引起始)枚举  

                                      listobj=['a','b','c']print(enumerate(listobj))print(list(enumerate(listobj)))for index,item in enumerate(listobj):    print(index,item)dicobj={}dicobj['name']='小明'dicobj['hobby']='rap'print(dicobj)for item in enumerate(dicobj,start=4):    print(item)

                                    3.5内置集 合函数

                                    a.集 合概念

                                    集 合set,属于数据类型一种,是无序且不重复的元素集 合,通常用来去重复。不支持索引切片。类似字典只有key没有value

                                    add()添加

                                    clear()清除[字典列表均可以]  

                                    difference()差集:-  

                                    intersection()并集:&  

                                    union()交集:|  

                                    pop()移除

                                    discard()移除某一元素

                                    update()更新数据

                                    b.创建方式

                                      #第一种et1={"1","2"}#第二种方式list1=['1','2']set2=set(list1)

                                      注:第一种方式中,字典也是{}但是集 合只需要键不需要值

                                      示例:

                                          dic1={}  dic2={1:2}  set1={1}#类似于字典但是只有键没有值  set2={1,2,3,4}  print(type(dic1))  print(type(dic2))  print(type(set1))  set1.add('python')#set1被添加在自己身上  print(set1)  rs=set1.difference(set2)#差集:set1有set2没有  print(rs)  print(set1-set2)#等同于差集  quData=set2.pop()#拿出数据  print(quData)  print(set2)  set2.discard(4)#删除指定项  print(set2)  set1.update(set2)#更新类似于并集,两个变量都是集 合,元素不行print(set1)

                                        4. 实战演练

                                        a.求任意n到m的数字和

                                        b.鸡兔同笼,35个头,94只脚,求鸡兔各多少只

                                        c.给定列表,找出其中唯一一个出现一次的元素

                                            #求1-10的和  def sumab (m,n):      jieguo=sum(range(m,n+1))      return jieguo  print(sumab(1,10))  #鸡兔同笼问题  def count():      for i in range(1,36):          if i*4+(35-i)*2==94:              return (i,35-i)  jieguo=count()  print('兔有{},鸡有{}'.format(jieguo[0],jieguo[1]))  #求给定列表中唯一一个出现一次的元素  li=[1,2,3,3,2,]  set1=set(li)  for i in set1:      li.remove(i)  set2=set(li)  print(set1-set2)

                                          编辑:赵栓栓

                                          校核:李正平、张泽明、张勇、王畅、陈凯歌、董浩杰

                                          来源:故障诊断与python学习
                                          航空电子pythonUM电机
                                          著作权归作者所有,欢迎分享,未经许可,不得转载
                                          首次发布时间:2024-01-17
                                          最近编辑:6月前
                                          故障诊断与python学习
                                          硕士 签名征集中
                                          获赞 56粉丝 45文章 118课程 0
                                          点赞
                                          收藏
                                          未登录
                                          还没有评论
                                          课程
                                          培训
                                          服务
                                          行家
                                          VIP会员 学习 福利任务 兑换礼品
                                          下载APP
                                          联系我们
                                          帮助与反馈