Python基础知识(day10)

day10

今日内容

  • 函数小高级
  • lambda 表达式
  • 内置函数

内容详细

  1. 函数小高级

    • 函数名当变量来使用

      # 函数赋值
      def func():
          print(123)
      # 函数为列表参数
      func_list = [func,func,func]
      func_list[0]()
      func_list[1]()
      for item in func_list:
          item()
      # 函数为集合元素,会去重
      func_list2 = {func,func,func}
      for itme in func_list2:
          item()
      # 函数为字典value,也可以为索引,但是无太大意义
      func_list2 = {'k1':'func','k2':'func','k3':'func'}
      for itme in func_list2:
          item()
      
      func_list3 = [func(),func(),func()]
      print(func_list3)
      
    • 函数可以当作参数进行传递

      def func(arg):
          print(arg)
      
      func(1)
      func([1,2,3,4])
      
      def show():
          return 999
      # 函数做参数进行传递
      func(show())
      
      
      # 分析打印的结果
      # 示例一
      def func(arg):
          arg()
      def show():
          print(666)
      func(show) # 666
      # 实例二
      def func(arg):
          arg()
          v1 = arg()
          print(v1)
      def show():
          print(666)
      func(show) # 666 666 None
      # 示例三
      def func(arg):
          arg()
          v1 = arg()
          print(v1)
      def show():
          print(666)
      result = func(show)
      print(result) # 666 666 None None
      
  2. lambda 表达式

    用于表示简单的函数,:左侧为参数,右侧为函数体

    # lambda 解决简单函数的情况
    def func1(a1,a2):
        return a1+a2
    # lambda 简化,:左侧为参数,右侧为函数体
    func2 = lambda a1,a2:a1+a2
    v = func2(1,2)
    print(v)
    
    # lambda表达式种类,传参方式
    func3 = lambda : 100
    
    func4 = lambda x1:x1 +10
    
    func5 = lambda *args,**kwargs: len(args) + len(kwargs)
    
    
    
    # 练习1
    user_list = []
    func = lambda x: user_list.append(x)
    v1 = func('llk')
    print(v1) # 没有返回值,默认返回None
    print(user_list)
    
    # 练习2
    def func1(x):
        v = x.strip()
        return v
    result = func1('llk')
    print(result)
    

注意

列表所有方法基本上都是返回None;字符串的所有方法基本上都是返回新值

  1. 内置函数

    • 自定义函数

    • 内置函数

      • len()

      • open()

      • range()

      • id()

      • type()

      • 输入输出

        • print()
        • input()
      • 强制转换

        • dict()
        • list()
        • tuple()
        • int()
        • str()
        • bool()
        • set()
      • 数学相关

        • abs() # 绝对值

        • float() # 转换成浮点型

        • max() # 最大值

        • min() # 最小值

        • sum() # 求和

        • divmod # 两数相除的商和余数

          a,b = divmod(1001,5)
          print(a,b) # 200 1
          
      • 进制转换相关

        • bin() # 转换为二进制

        • oct() # 转换成八进制

        • int() # 其他转换从十进制

        • hex() # 转换从十六进制

          # 十进制转换成二进制
          num = 15
          v1 = bin(num)
          print(v1)
          # 十进制转换成八进制
          v2 = oct(num)
          print(v2)
          # 二进制转换成十进制
          v1 = '0b1111'
          result = int(v1,base=2)
          print(result)
          # 八进制转换成十进制
          v1 = '0o17'
          result = int(v1,base=8)
          print(result)
          # 十六进制转换成十进制
          v1 = '0xf'
          result = int(v1,base=16)
          print(result)
          
          

练习题

# 练习1
'''
分页对数据进行展示
要求:
    每页显示10条数据
    让用户输入要查看的页码进行显示
'''
user_list = []
for i in range(1,1000):
    tem = {"name": "李浪魁%s" %i,"email":"1067676353@qq.com"}
    user_list.append(tem)
 # 数据总条数
totle_count = len(user_list)
# 每页显示10条
per_page_count = 10
# 总页码数
max_page_num,a = divmod(totle_count,per_page_count)
if a >0:
    max_page_num += 1
while True:

    pager = int(input("请输入要查看的页码: "))
    if pager < 1 or pager > max_page_num:
        print("页码不存在,请重新输入范围内的页码!")
    # 根据页码取数据
    else:
        '''
        # 第一页: user_list[0:10] -> 0123456789
        # 第二页: user_list[10:20] 
        '''
        start = (pager - 1) * per_page_count
        end = pager * per_page_count
        data = user_list[start:end]
        for item in data:
            print(item)
# 练习2
# 1字节等于8位
# IP:192.168.12.79 -> 001010010 . 001010010 . 001010010 .001010010
# 十进制转换成二进制的叫法,0-255
'''
ip = "192.168.12.79"
将ip中的每个十进制数转换成二进制数,并通过逗号链接生成一个新的字符串
'''
ip = '192.168.12.79'
# 取出放到列表
ip_list = ip.split('.') # ['192','168','12','79']
# 转换成数字
result = []
for item in ip_list:
    result.append(bin(int(item)))
print(','.join(result))

# 练习3
'''
将IP = "192.168.12.79" 中的每个十进制数转换成二进制数
算出的二进制数转换从的十进制数的值
'''

今日总结

  • 函数可以当做一个变量:参数传值/当元素嵌套到字典列表中
  • lambda表达式
  • 内置函数
posted @ 2020-03-22 21:35  RaytheonThor  阅读(63)  评论(0编辑  收藏  举报