zoukankan      html  css  js  c++  java
  • 10-python--function

    # s = 'alskj'
    # count = 0
    # for i in s:
    # count += 1
    # print(count)

    '''
    def my_len(s1):
    count = 0
    for i in s1:
    count += 1
    print(count)

    s = 'alskj'
    my_len(s)

    def meet():
    print('打开探探')
    print('左划一下')
    '''

    # 函数的返回值
    # return:在函数中遇到return直接结束函数;将数据返回给函数的执行者,调用者。
    # 可以返回单个值;多个值以元祖形式返回。可使用元祖的拆包
    '''
    def meet():
    print('打开探探')
    print('左划一下')
    return '哈哈哈'
    print('666')
    ret = meet()
    print(ret)
    '''

    # 函数的参数
    # 实参角度
    # 位置参数一定要在关键字参数的前面

    # 1、位置参数
    # def fun1(sex, age):
    # print('sex: %s, age: %s' % (sex, age))
    # fun1('man', 18)
    #
    # def compare_max2(int1, int2):
    # if int1 > int2:
    # return int1
    # else:
    # return int2
    # ret = compare_max2(3, 3)
    # print(ret)

    # a = 10
    # b = 20
    # c = a if a > b else b
    # print(c)

    # 2、关键字参数
    # def fun1(sex, age, height, weight):
    # print('sex: %s, age: %s, height: %s, weight: %s' % (sex, age, height, weight))
    # fun1('women',age='25',height=55,weight=66)

    # def funjai(s1, s2):
    # return s1 + s2
    # print(funjai('asd', 'dfg'))

    # 形参角度
    # 1、位置参数与实参角度的位置参数是一种
    # lis1 = [1, 2, 3, 4]
    # def funlist(lis):
    # return lis if len(lis) < 2 else lis[0:2]
    # print(funlist(lis1))

    # 2、默认值参数
    # def fundefault(age, height, weight,sex='man'):
    # print('sex: %s, age: %s, height: %s, weight: %s' % (age, height, weight, sex))
    # fundefault(age='25',height=55,weight=66, sex='woman')

    # 3、万能参数:可以接收所有的实参
    # * 在函数的定义时代表聚合,将所有的位置参数聚合成一个元祖,赋值给args
    # ** 在函数的定义时代表聚合,将所有的关键字参数聚合成一个字典,赋值给kwargs

    # def sum1(*agrs):
    # summ = 0
    # for i in agrs:
    # summ += i
    # print(summ)
    # sum1(1,2,4,5,7)

    # def sm2(**kwargs):
    # print(kwargs)
    # sm2(name='dsl',height='189',weight='169')

    # 4、顺序:a,b,*args,sex='man',**kwargs

    # *在函数调用时,*代表打散(可迭代对象)
    # def func3(*args):
    # print(args)
    # func3(*[1,2,3],*[4,5,6])

    # def func4(**kwargs):
    # print(kwargs)
    # func4(**{'one':1}, **{'two':2})

    # 名称空间(命名空间)
    # 全局名称空间:(当前py文件)
    # 局部名称空间(临时名称空间)函数执行时开辟
    # 内置名称空间:python源码提供的内置函数(builtins.py)
    # 加载顺序:内置-->全局-->局部
    # 取值顺序:局部-->全局-->内置
    # 作用域:
    # 全局作用域:内置名称空间、全局名称空间
    # 局部作用域:局部名称空间
    # 局部作用域不能改变全局作用域的变量,当python解释器读取到局部作用域时,
    # # 发现对一个变量进行修改的操作,解释器会认为在局部已经定义了此变量,没有则报错。
    # a = 1
    # b = 2
    # def func():
    # name = 'dfl'
    # age = 73
    # print(globals()) # 返回的是字典:字典里的键值对、返回的是全局作用域的所有内容
    # print(locals()) # 返回的是字典:字典里的键值对、返回的是当前作用域的所有内容
    # func()

    # 默认参数的陷阱:只针对于默认参数是可变的数据类型
    # def func(name,sex='man'):
    # print(name)
    # print(sex)
    # func('dfl')

    # 如果默认参数是可变数据类型,那么再次调用用的是同一个内存地址
    # def func(name,aaa=[]):
    # aaa.append(name)
    # return aaa
    # ret = func('dfl')
    # print(ret, id(ret))
    # ret2 = func('ddd')
    # print(ret2, id(ret2))

    # global
    # 1、在局部作用域声明一个全局变量
    # def func():
    # global name
    # name = 'df'
    # # func()
    # print(name)

    # 2、修改全局变量
    # count = 1
    # def func():
    # global count
    # count += 1
    # func()
    # print(count)

    # nolocal
    # 1、不允许操作全局变量
    # 2、局部作用域:内层函数对外层函数的修改

    # 函数名的应用
    # 1、函数名只想的是函数的内存地址
    # 2、函数名+()就可以执行函数
    # 3、函数名就是变量
    # 4、函数名可以作为容器类型元素
    # 5、函数名可以作为函数的参数
    # def func():
    # print('in func')
    # def func1(x):
    # x()
    # func1(func)
    # 6、函数名可以作为函数的返回值
    # def func():
    # print('in func')
    # def func1(x):
    # print('in func1')
    # return x
    # ret = func1(func)
    # ret()


  • 相关阅读:
    RQNOJ 342 最不听话的机器人:网格dp
    RQNOJ 329 刘翔!加油!:01背包
    RQNOJ 57 找啊找啊找GF:01背包
    RQNOJ 202 奥运火炬登珠峰:01背包
    RQNOJ 201 奥运大包围:LIS + 拼链成环
    2017SN多校D1T2 note:dp
    2017SN多校D1T1 loveletter:模拟
    HDU 2157 How many ways??:矩阵快速幂【i到j共经过k个节点的方法数】
    poj 3764 The xor-longest Path
    bzoj 1192 鬼谷子的钱袋
  • 原文地址:https://www.cnblogs.com/Daspig/p/12793258.html
Copyright © 2011-2022 走看看