zoukankan      html  css  js  c++  java
  • 寒假自学(三)

    希望所有温柔又可爱的人最后都能幸福❤

    今日总结:

    代码量 200行
    博客量 一篇
    所学时间 4小时左右
    了解到的知识点 python语法进阶

    明日计划:

    早上 python面向对象基础
    下午 python面向对象基础
    晚上

    具体内容:
    变量进阶

    • 变量数据都是保存在内存中的
    • python中函数的参数传递以及返回值都是靠引用传递的

    如果变量已经被定义,当给一个变量赋值的时候,本质上是修改了数据的引用

    • 变量不再对之前的数据引用
    • 变量改为对新赋值的数据引用

    使用id()函数查看变量地址

    def test(num):
        print("在函数内部 %d 对应的内存地址是 %d" % (num, id(num)))
        result = "hello"
        print("函数要返回数据的内存地址是 %d" % id(result))
        return result
    
    
    a = 10
    
    print("a 变量保存数据的内存地址是 %d" % id(a))
    
    r = test(a)
    
    print("%s 的内存地址是 %d" % (r, id(r)))
    
    
    • 可变和不可变类型
      • 不可变类型,内存中的数据不允许被修改
        • 数字类型,int,bool,float,complex,long(2,x)
        • 字符串str
        • 元组tuple
      • 可变类型,内存中的数据可以被修改:
        • 列表list
        • 字典dict

    字典的key只能使用不可变类型的数据

    哈希(hash)

    python中的hash只能接受一个不可变类型的数据作为参数

    • 键值对的key必须是不可变类型数据
    • 键值对的value可以是任意类型的数据

    局部变量全局变量

    • 局部变量的生命周期
      • 生命周期是指变量被创建被系统回收的过程
      • 局部变量函数执行时才会被创建
      • 函数执行结束后局部变量被系统回收
      • 局部变量在生命周期内,可以用来存储函数内部临时使用到的数据
    • 全局变量
      • 在函数内部,可以通过全局变量的引用获取对应的数据
      • 但是,不允许直接修改全局变量的引用--使用赋值语句修改全局变量的值

    在函数内部修改全局变量的值需要使用global进行声明

    num = 1
    
    
    def demo():
        global num
    
        num = 99
        print("demo ==> %d" % num)
    
    
    def demo2():
        num = 99
        print("demo ==> %d" % num)
    
    
    demo2()
    print("demo ==> %d" % num)
    demo()
    
    

    在有些公司中,要求在定义全局变量时增加g_或者gl_的前缀

    多个返回值

    def measure():
        print("测量开始...")
        temp = 39
        wetness = 50
        print("测量结束...")
    
        # 如果返回的是元组,小括号可以省略
        return temp, wetness
    
    
    result = measure()
    print(result)
    
    print(result[0])
    print(result[1])
    
    gl_temp, gl_wetness = measure()
    print(gl_temp)
    print(gl_wetness)
    

    append方法

    def demo(num_list):
        print("函数内部的代码")
        num_list.append(9)
        print(num_list)
        print("函数执行完成")
    
    
    gl_list = [1, 2, 3]
    demo(gl_list)
    print(gl_list)
    

    函数的缺省参数定义

    def print_info(name, gender=True):
        """
    
        :param name: 姓名
        :param gender: 性别True 男生 False 女生
        """
        gender_text = "男生"
    
        if not gender:
            gender_text = "女生"
    
        print("%s 是 %s" % (name, gender_text))
    
    
    print_info("小明")
    print_info("小肖", False)
    

    多值参数

    定义支持多值参数的函数

    • 有时可能需要一个函数能够处理的参数个数是不确定的,这个时候,就可以使用多值参数
    • python中有两种多值参数:
      • 参数名前增加一个*可以接收元组
      • 参数名前增加两个*可以接收字典
    • 一般在给多值参数命令时,习惯使用以下两个名字
      • *args--存放元组参数,前面有一个*
      • **kwargs--存放字典参数,前面有两个*
    • argsarguments的缩写,有变量的含义
    • kwkeyword的缩写,kwargs可以记忆键值对参数
    def demo(num, *nums, **person):
        print(num)
        print(nums)
        print(person)
    
    
    demo(1, 1, 2, 3, 4, 5, name="小明",age = "18")
    

    多值参数

    def sum_numbers(*args):
        num = 0
        for i in args:
            num += i
        print(args)
        return num
    
    
    result = sum_numbers(1, 2, 3, 4, 5)
    print(result)
    

    递归

    • 一个函数内部自己调用自己
      • 函数内部可以调用其他函数,当然在函数内部也可以调用自己
      • 需要指定递归出口,避免死循环
    def sum_number(num):
        print(num)
        if num == 0:
            return
        sum_number(num - 1)
    
    
    sum_number(3)
    
    def sum_number(num):
        if num == 1:
            return 1
        temp = sum_number(num - 1)
        return temp + num
    
    
    print(sum_number(100))
    
  • 相关阅读:
    jQuery和AngularJS的区别小分析
    Angular.element和$document的使用方法分析,代替jquery
    AngularJS中bootstrap启动
    angular 依赖注入原理
    AngularJS介绍
    箭头函数
    Object.create 函数 (JavaScript)
    forEach 方法 (Array) (JavaScript)
    Petapoco 查询 语法
    C# 方法中带默认值的参数
  • 原文地址:https://www.cnblogs.com/125418a/p/14280107.html
Copyright © 2011-2022 走看看