# -*- coding: utf-8 -*-
# author:xiaoming time:2019/6/13
# 一、函数的作用域
# 1.local,局部作用域(L)
# 2.enclosing,父级函数的局部作用域(E)
# 3.globa,全局变量(G)
# 4.build-in,系统模块(B)
# 优先级顺序为:局部作用域(L)>父级函数作用域(E)>全局作用域(G)>系统模块(B)
var = 'xieyc'
def take_name():
var = 'xyc'
print('var1:',var)
def get_name():
var = 'x'
print('var2:',var)
get_name()
take_name()
print('var3:',var)
# 二、global 和 nonlocal 的作用域
# 1.global关键字用来在函数或其他局部作用域中使用全局变量。但是如果不修改全局变量也可以不使用global关键字
gcount = 0
def global_test():
# gcount += 1
print (gcount)
global_test()
# 2.声明全局变量,如果在局部要对全局变量修改,需要在局部也要先声明该全局变量
gcount = 0
def global_test():
global gcount
gcount += 1
print(gcount)
global_test()
# 3.nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量
def make_counter():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter
c = make_counter()
print(c())
print(c())
print(c())
# 三、函数返回值
# return [表达式] 结束函数,选择性地返回值给调用方。不带表达式的return相当于返回 None。
# 返回值可以是所有对象
# 四、函数参数
# 1.必需参数(位置参数)
def fun1(a, b):
pass
# 2.关键字参数
fun1(b=1, a=2)
# 3.默认参数
def fun3(c, d=1):
pass
# 4.不定长参数(可变参数)
def fun4(*args, **kwargs):
pass
# *args 以元组(tuple)的形式导入
# **kwargs 以字典的形式导入
# 五、匿名函数
# python 使用 lambda 来创建匿名函数 表达式
# 语法:lambda [arg1 [,arg2,.....argn]]:expression
y = lambda x:x * x
print(y(3))
# 1、匿名函数不需要特意去定义一个函数名,可能这个函数只是某个地方临时用一下,后面就不会再用了
# 2、匿名函数一般都是和其他方法搭配使用,使得代码更加简洁
list1 = [{"name": "xixi", "age": "11"}, {"name": "hehe", "age": "12"}, {"name": "haha", "age": "13"}]
list1.sort(key=lambda x: x['name'])
print(list1)
【python地图】基础5自定义函数
最新推荐文章于 2022-01-21 10:55:11 发布