python基础——4.函数&内置函数

发布时间:2022-06-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了python基础——4.函数&内置函数脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.函数是对动作或者功能的封装;定义了之后可以在任何需要它的地方调用 2.返回值有三种情况: 没有返回值 不写return 只写return,结束 return None 不常用

返回一个值
    可以返回任何数据类型
    只要返回旧可以接收到
    如果在一个程序中有多个return,只执行一个

返回多个值
    多个返回值用多个变量接收,有多少就用多少
    用一个变量接收多个返回值,得到的是元组

3.参数 没有参数:函数和调用函数是括号里不写内容 有一个参:传什么是什么 有多个参:位置参数

站在实参的角度上:
    1.位置参数:按位置传         # 在最前
    2.关键字参数:按关键字传      # 在位置后
    3.混合参数:可以混用,但必须先按位置传

站在形参角度上:
    1.位置参数必须传,有几个传几个
    2.默认参数,可以不传.如果传就用传的.位置在前,默认在后
        def regist(name, age, sex="男")
            print(name, age,sex)
        regist(xx, yy, zz)
    3.动态参数:可以接收任意多个参数
        参数前边要加*号
        *args不能接收关键字参数,元组
        **kwargs可以接收关键字参数,字典
        顺序:位置参数,*args,默认参数,**kwargs
        默认参数作为形参的时候,放在*args和**kwargs中间
        默认参数作为实参的时候也一样,并且只能用关键子参数形式传递
        在形参位置*是聚合,实参位置是打散

4.函数的进阶 内置命名空间--phthon解释器; 内置的名字在启动解释器的时候被加载进内存中

全局命名空间--写的代码但不是函数中的代码
在程序从上倒下执行的过程中一次加载进内存的,放置了我们设置的所有变量名和函数名

局部命名空间--函数
就是被内部定义的名字,当调用函数的时候,才会产生这个命名空间,随着函数执行的结束这个命名空间就消失了

globls()可以查看全局作用域中的所有内容
locals()查看当前作用域中的所有内容

对于不可变数据类型,在局部可查看全局作用于中的变量,不能修改.修改要globls声明
globals永远打印全局;locals输出声明根据所在位置
nonlocal引入局部中离它最近的外层变量,修改只会影响离当前函数最近一层的局部变量
函数名是第一类对象;函数名就是内存地址;函数名可以作为容器类型的元素;函数名可以赋值;函数名可以作为函数的参数

5.函数的嵌套使用

def max(a, b):
    return a if a?b else b
def the max(x, y, z):
    c = max(x, y)
    return max(c, z)
定义;内部函数可以使用外部函数的变量

&&&&&&&内置函数 内置函数68个 反射相关4个 基础数据类型相关38个 面向对象相关9个 迭代器生成器相关3个 # range(begin, end, 步长) # next(迭代器) # iter(可迭代对象) 其他12个 # dir() 查看内置方法 # callable() 检查对象是否可被调用 # import() 模块相关 导入模块 import time == import("time") time.time() # 某个方法术语某个数据类型的变量,就用.调用 # 如果某个方法不依赖任何数据类型,就直接调用--内置函数和自定义函数 # hash() 对于可以hash的数据的hash值在一次程序的执行过程中总是不变的 # input() # print("", end="") 默认不回车 print(1, 2, 3, 4, 5, seq="|") 指定结束符和指定分割符 print("aaa",file=f) 写到文件中

    字符串类型代码的执行
    # eval()                        可以执行字符串,不安全
        eval("print(123)")
        eval(“1+2+3+4”)
    # exec()                        同上,但无返回值
        eval适合处理有结果的简单计算
        exec适合处理简单流程控制
    # compile() 将字符串类型代码编译,代码对象能够通过exec或者eval使用

   数学运算:
      abs(x)        参数可以是整数或浮点数,如果是复数,则返回其大小
                    复数返回绝对值(复数与它的共轭复数的乘积的平方根 a^2+b^2)
      divmod(x, y)    返回个包含商和余数的元组
   进制转换:
      bin()          将int和long int转换成二进制 “0bxx” 0b
      hex()          10进制转换成16进制      0x
      oct()          函数将一个整数转成8进制数 0o
   数据类型:
      bool()          函数用于将给定参数转换为布尔类型,如果没有参数,返回False
      comlex()        用于创建一个值为real+imag*j的复数或转化一个字符串或数为复数
                      如果第一个参数为字符串,不需要指定第二个参数
                      # complex("1")
                      # +号前后不能有空格
      float()         将整数和字符串转浮点型
      int()           将字符串或数字转整形
   字符串代码执行:
      !!!compile()    将字符串编译为字节代码 (source, filename, mode('exec', 'eval' or 'single'))
      eval()          执行一个字符串表达式,并返回表达式的值
         # eval(expression[, globals[, locals]])
         # eval("3" * "7")
         # 在实际开发中慎用
         # ret = input(">>>")        10,5
           a, b = eval(ret)
           print(a, "+", b)
      exec()
         执行存储子字符串或文件中的语句,比eval可以执行更复杂的代码
   调用相关:
      callable()           用于检查对象是否可被调用
         # 注意返回true,object仍然可能调用失败
         # 对于函数、方法、lambda、类以及实现了__call__方法的类实例都返回True
         # callable(object)
   文件操作:file()          创建file对象,别名open()
         # 有个缓冲概念,后边了解下
   查看内置属性:
      dir()          不带参数返回当前范围内变量方法和定义的类型列表;带参数,返回参数的属性、方法列表
   内存相关:
      hash()          获取对象的哈希值
      id()            获取对象的唯一标示符,cpython中得到内存地址
   帮助:
      help()          帮助模块
   作用域:
      globals()       函数以字典返回当前位置的全局变量

      !!ascii()      返回任何对象的可读版本,将非ascii字符替换为转义字符

      !!!bytes()     返回字节对象,或创建指定大小的空字节对象 bytes(x, encoding,error)
         # bytes 返回字节对象
         # bytesarray 返回字节数组

      !!!bytearray()  返回一个新字节数组,这个数组的元素可变,并且值范围0<=x<256
         # 注意:如果是可迭代对象,元素不能大于255
                其他数据类型这里先不做记录,不清楚这个内函数的用途
                bytearray(x, encoding, error)
                byte()返回一个不能修改的对象 bytearray返回一个可以修改的对象

      all()         用于判断给定的可迭代参数iterable中所有元素是否都为True
                    如果是返回True,不是返回False
      any()         用于判断给定的可迭代参数iterable中所有元素是否都为Fales
                    如果是返回False,有一个为True,返回True
         # 注意:在all中,一个空元组或列表返回的是True
                在any中,返回的是的False

      chr()           用0到255之间的整数做参,返回一个对应字符
         # chr(10进制或16进制数)
         # 返回的是对应的ascii字符
      !!!classmethod()修饰符对应的函数不需要实例化,不需要self参数,但第一个参数需要是表示自身类的cls参数
                      可以来调用类的属性,类的方法,实例化对象等.

      cmp(x, y)       比较两个对象,x<y,返回-1;x==y返回0,x>y返回1
         # python3里目前没看到

      delattr()       删除属性
         # delattr(object, name)
         # object对象,name对象的属性

      enumerate()     将可遍历的对象组合为一个索引序列,同时列出下标
         # enumerate(sequence, [start=0])

      filter()        用于过滤序列,返回符合条件元素组成的新列表
                      接收两个参数,一个是函数,后一个是序列,返回true的放入新表
      format()        关于占位符另外记录
      frozenset()     冻结集合,另外记录
      面向对象:getattr()       返回一个对象的属性值        关于面向对象?

      hasattr()       判断对象是否包含对应的属性
         # hasattr(object, name)
      input()

      !!!isinstance()  判断一个对象是否是一个已知的类型,类似type()
         # type()不会认为子类是一种父类类型,不考虑继承
         # isinstance()会认为自雷是一种父类,考虑继承关系
         # 如果要判断两个类型是否相同,推荐使用isinstance()
         # isinstance(object, classinfo)
      !!!issubclass()  判断参数class是否是类型参数classinfo的子类
         # issubclass(class, classinfo)

      len()
      iter()           用来生成迭代器
         # iter(object[, sentinel])
      list()
      locals()      字典形式返回全部局部的变量
      map()         做映射
      max()         求最大值
      !!!memoryview()  函数返回给定参数的内存查看对象(memory view)
      min()         求最小值
      next()        返回迭代器下一个项目
      object()      返回一个空对象 不能向这个对象添加新的属性或方法
                    这个对象是所有类的基础,它拥有所有类的默认的内置属性和方法
      open()        创建file()文件
      ord()         ?
      pow()         返回x的y次方,math模块的方法
      !!!property()    函数的作用是在新式类中返回属性值
      reduce()      函数对参数序列中元素进行累积
      repr()        函数将对象转化为供解释器读取的形式
      reversed()    反向列表中的元素
      round()       返回浮点数x的四舍五入值
      set()         集合
      setattr()     函数对应函数getattr() 用于设置属性值,属性值不一定存在
      slice()       实现切片
      sorted()      sorted可以对所有可迭代对象进行操作 sort只能用于list
                    sorted创建新列表 sort对原表操作
      !!!staticmethod()        返回函数的静态方法
      str()
      sum()
      super()       用于调用父类(超类)的一个方法
      tuple()       元组
      type()
      unichr()      与chr()功能一样,只不过返回unicode字符
      vars()        返回对象object的属性和属性值的字典对象
      zip()






最重要的几个
    zip()
        # zip(x, y) 拉字典的话,只能拉key
        # 创建字典 dict(zip(x, y))
        # 将可迭代的对象作为参数,将对象中的元素打包成1个个元组,返回这些元组组成的列表
        # 迭代对象元素个数不一样,按长度短的返回
        # zip在python3中为了减少内存,zip返回的是一个对象
        # 如果需要展示需要手动list()转换

    filter
        去循环可迭代的数据,必须是函数的名字;过滤方法
        def is_odd(x):
            return x % 2 == 1
        ret = filter(is_odd, [1, 4, 6, 7, 9, 12, 17])

    map
        ret = map(abs, [1, -4, 6, 8])
        print(ret)              是内存地址
        for i in ret:
            print(i)
        #filter        执行了filter之后的结果集合一定是小于等于执行之前的个数
                       filter只管删选,不会改变原来的值
                       filter是对每个元素过滤,返回迭代器
        #map           执行前后元素个数不变
                       值可能发生改变
                       map是对每个元素做自定义映射,返回迭代器
    sorted
        # sort     是在原列表基础上排序
        # sorted   返回一个新列表 快 c语言实现的
        # reversed 生成一个新的可迭代类型
        new_l = sorted(l, key=len)

带key的内置函数 min max filter map sorted 都可以和lambda合作

&&&&&&&匿名函数 # 关键字 lambda 列1 def calc(n): return n**n print(calc(10))

calc = lambda n: n**n
print(calc(10))

列2
print(max(dic.key = lambda k:dic[k]))

列3
ret = filter(lambda x:x>10, [5, 4, 44])

# 注意事项:
    1.lambda函数不能包含命令
    2.包含的表达式不能超过一个
    3.格式:冒号前是参数,可以有多个,逗号隔开,冒号后边为表达式
    4.lambda返回值是一个函数的地址,也就是函数对象

  方式1
    a = lambda x: x+3
    print(a)
    print(a(3))

  方式2   注意括号表示调用,不表示元组
    (lambda x: x+3)(3)

  方式3   如果有关键字参数,需要放在后边
    (lambda z, x, y: z+x+y)(3, x=4, y=5)

  方式4   可以传不定长参数
    (lambda *args, x, y: args[0]+x+y)(3, 2, 1, x=4, y=5)

脚本宝典总结

以上是脚本宝典为你收集整理的python基础——4.函数&内置函数全部内容,希望文章能够帮你解决python基础——4.函数&内置函数所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: