|
本帖最后由 周大胖子 于 2023-9-9 15:38 编辑
- # 这是一个示例 Python 脚本。
- import copy
- import datetime
- # 按 Shift+F10 执行或将其替换为您的代码。
- # 按 双击 Shift 在所有地方搜索类、文件、工具窗口、操作和设置。
- def print_hi(name):
- # 在下面的代码行中使用断点来调试脚本。
- print(f'Hi, {name}') # 按 Ctrl+F8 切换断点。
- # 按间距中的绿色按钮以运行脚本。
- # if __name__ == '__main__':
- # print_hi('PyCharm')
- # 访问 https://www.jetbrains.com/help/pycharm/ 获取 PyCharm 帮助
- def d(q):
- print(q)
- name = [('1', '2'), 'n']
- # 1、函数定义从def 开始。
- #
- # 2、def后面是函数名称,空格分隔,命名规则参考变量命名。
- #
- # 3、函数名称后面是括号,根据需要设置参数。
- #
- # 4、括号后面是冒号。
- #
- # 5、函数体自动向右缩进
- # 6.默认值参数的写法
- # def t(a,b=2)
- # 7 关键字写法
- # 使用函数时 ,把参数名带进去
- # 例如 t(b=6,a=1) 顺序无所谓
- # 形参 函数括号里的
- # 实参 调用时传递的
- # 8.可变参数
- # 可变参数*args和 关键字参数**kwargs
- # *args中 关键是星号(*),表示来接收可变数量的参数 例如
- # **kwargs使用两个星号来传递可变数量的键值对参数
- # 参考地址 https://baijiahao.baidu.com/s?id=1759961023284275987&wfr=spider&for=pc
- # 9.全局和局部变量:
- # gLobal关罐字的添加:
- # 只有不可变的类型才需要派加gLobal
- # 可变的类型不需要添加global
- # 可变与不可变:
- # 不可变: 当改变变量的值时,内存id(数据)地址发生了改变 类型 : int str float bool tuple
- # 可变 : 里面的内容发生了改变,但是地址没有发生改变 类型:list dict set
- # 10注释的用法
- # 注释的用法 (三个引号 )
- # def dologin(username, password):
- # """
- # :param username: 用户名
- # :param password: 密码
- # :return:
- # """
- # print(username)
- # print(password)
- # 11 外部变量的引用:
- # 1.不是在西最中使用,可以通过sys.getrefcount(a] 引用个最del 交量
- # 表示副联了一个引用
- # 2,西教的引用:
- # 必须要分清盘传递的值是可变美型还是不可变类型
- # 如果是可变,里面发生改受,外层就能看到改受后内容如果是不可变,更面发生改变不会影响外部得到交量营
- # 12 .local()
- # result = Locals() # Locals() 表示查看函数中的局部变量,以字典得形式返回
- # print(result)
- def tellmewhy():
- return 5
- s = tellmewhy()
- d(s ** 2)
- def tell2():
- l = tellmewhy()
- d(l * 3)
- tell2()
- # 默认值参数
- def tel3(t, t2, t3=False):
- print(t, t2, t3)
- tel3(1, 2)
- def tell4(*args):
- print(args)
- tell4('6', '7', '8')
- # ('6', '7', '8')
- # tell4((98, 99))
- # ((98, 99),)
- def get_sum(*args):
- s = 0
- for v in args:
- s += v
- print('和是{}'.format(s))
- get_sum()
- get_sum(1, 2, 3, 4, 5)
- list2 = [1, 3, 5, 9]
- get_sum(*list2)
- # 和是0
- # 和是15
- # 和是18
- def get_more(**kwargs):
- print(kwargs)
- get_more(name='张三', nat=18)
- # 注释的用法 (三个引号 )
- def dologin(username, password):
- """
- :param username: 用户名
- :param password: 密码
- :return:
- """
- print(username)
- print(password)
- # 装饰器 最简单的写法
- def debug(func):
- def wrapper():
- d("[DEBUG]: enter{}()".format(func.__name__))
- return func()
- return wrapper
- @debug
- def say_hello():
- d('hello')
- # say_hello = debug(say_hello) 老的写法 当前版本不支持了
- # 添加功能并保证原函数名不变
- say_hello()
- # 装饰器带参数的写法(指定参数名系列)
- def debug2(func):
- def wrapper(day):
- # 这里的参数与传递进来的函数的参数名 需要一致
- d('[DEBUG2]l enter{}()'.format(func.__name__))
- return func(day)
- return wrapper
- @debug2
- def tellday(day):
- d('这是个带参数的初级装饰器,当前时间是{}'.format(day))
- # 获取当前日期
- current_date = datetime.date.today()
- tellday(current_date)
- # 可变参数*args和关键字参数**kwargs
- def debug3(func):
- def war(*args, **kwargs):
- d('[DEBUG3] enter{}()'.format(func.__name__))
- return func(*args, **kwargs)
- return war
- @debug3
- def telling(day):
- d('这是个不定义参数名的装饰器,当前时间是{}'.format(day))
- telling(current_date)
复制代码 |
|