10-python--function

时间:2020-04-28
本文章向大家介绍10-python--function,主要包括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()


原文地址:https://www.cnblogs.com/Daspig/p/12793258.html