python基础学习之函数基础和部分内置函数

时间:2023-03-09 16:46:03
python基础学习之函数基础和部分内置函数
    • 在函数调用的时候,必备参数必须要传入

      函数定义:

      def  函数名:

      代码块pass

      return  返回值

    • 函数名命名规则: 字母、数字和下划线组成,和变量命名规则一致

      pass在这里表示什么都没有,不执行任何操作

      return 后面可以返回任意表达式,但不能是赋值语句

    • return没有写返回值的话,默认None

      注意 return 和 print 的区别,return是函数的返回值,返回值可以赋值给变量,而print只是打印出来

    • def    test():

      print(“我最帅”)

      return    我是大帅哥

      个人理解,return的内容 才是函数最终执行结果,其中的print内容只是执行过程

      print(test())

    • 函数参数:

    • 必备参数:必须要传入,否则报错:

      def  func(x):

      print(x)

      func(1)

      x就是必备参数

    • 默认参数:提前传好的,如果你不传,就使用默认值

      def  func(x, y=None):

      print(x)

      print(y)

      func(1)

      func(1, 2)

      注意:默认参数要位于必备参数

      列表的后面

    • 不定长参数:

      def  func(*args, **kwargs):

      print(args)

      print(kwargs)

      调用1:func(1, 2, 3, a=4, b=5, c=6)

      调用2:func(*(1, 2, 3), **{'a': 4, 'b': 5, 'c': 6})

    • 注意事项:

      1、在函数调用的时候,必备参数必须要传入

      2、在函数调用的时候,默认参数可以不传入值,不传入值时,会使用默认参数

      3、在函数调用的时候,不定长参数可以不传入,也可以传入任意长度。其中定义时,元组形式可以放到参数最前面,字典形式只能放到最后面

    • 内置函数(简单)

      len  求长度

      min  求最小值

      max  求最大值

      sorted  排序

      reversed  反向

      sum  求和

      bin  转换为二进制

      oct  转换为八进制

      hex  转换为十六进制

      ord  字符转ASCII码

      chr  ASCII码转字符

    • #   enumerate    返回一个可以枚举的对象【好像没什么用】
      li = [1, 2, 3, 4, 5, 6, 7]
      print(list(enumerate(li)))
      print(dict(enumerate(li)))

    • #     exec    
      exec('print(1+1)')  #把字符串'print(1+1)'当做代码执行
      #     eval
      print(eval('2+2'))  #把字符串‘2+2’当做代码执行

      【好像也没啥用】

    • #   filter    【掌握】
      # 针对判断,保留True的值
      def axe(x):
      if x < 5:
      return True
          else:
      return False
      li = [1,2,3,4,5,6,7,8,9,0]
      b = filter(axe,li)
      print(list(b))

    • # map【掌握】
      li = [1,2,3,4,5,6,7,8,9,0]
      def axe(x):
          if x < 5:
              return 10
          else:
              return 11
      print(tuple(map(axe,li)))

      map函数的意思,是把传入的序列类型放置到定义的函数中运行,并获取结果用list表示出来。

    • #    zip 【掌握】【一一对应的拉链函数】

      li = [1,2,3,4,5,6]
      tu = (1,2,3,4,5)
      print(dict(zip(li,tu)))
      print(list(zip(li,tu)))

    • max、min、len等等

    • max/min和zip的高阶运用

    • 取出自定义列表中age最大的一项

      people = [
              {'name':'asdf','age':100},
          {'name':'gsff','age':1000},
          {'name':'asqf','age':10000},
          {'nam4':'atdf','age':100000},
      ]

      分解思考:需要比较的是people是个列表,每个元素是个字典,我们需要比较的是age的大小,首先需要取出age的值,比如第一个age,people[0]['age'],遇到这种情况,max/min函数中有个key参数,即表现为max(people,key = lambda x : x.['age']),该表达式的意思是,max函数开始迭代people列表,发现其元素为字典,就讲people列表按照匿名函数进行迭代,提取age的值在进行大小比较。

    • 取出年纪最小的人名和年纪(即那一组数据)

      dic = {'lili_age':22,'longxiu_age':33,"lixitong_age":3}
      print(min(zip(dic.values(),dic.keys())))

      分解思考,单个字典项的大小比较是key值比较,即逐个字符比较,按照abcdefg的顺序,后面的为大,数字和字母无法比较,会报错,多个字典之间无法比较大小。用zip函数转换字典项,想年龄值放到前面,即zip(dic.values(),dic.keys()),生成新的迭代内容,然后在用min函数取出来生成列表。