python函数--day14-03

集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。

集合元素(set elements):组成集合的成员(不可重复)

集合对象是一组无序排列的可哈希的值:集合成员可以做字典的键

什么是可哈希,不可哈希?

 

什么是可哈希(hashable)?
简要的说可哈希的数据类型,即不可变的数据结构(字符串str、元组tuple、对象集objects)。
  哈希有啥作用?

它是一个将大体量数据转化为很小数据的过程,甚至可以仅仅是一个数字,以便我们可以用在固定的时间复杂度下查询它,所以,哈希对高效的算法和数据结构很重要。

什么是不可哈希(unhashable)?
同理,不可哈希的数据类型,即可变的数据结构 (字典dict,列表list,集合set)

集合分类:可变集合、不可变集合

可变集合(set):可添加和删除元素,非可哈希的,不能用作字典的键,也不能做其他集合的元素

不可变集合(frozenset):与上面恰恰相反

函数有什么作用?

1.减少重复代码

2.方便修改,更容易扩展

3.保持代码一致性

#加法器
def add(*args):	#*args构造成了元组
	print(args)   #args表示参数
	sum = 0
	for v in args:
		sum += v

	return sum


print(add(1, 4, 6, 9))
print(add(1, 4, 6, 9, 5))


def print_info(**kwargs):  #**kwargs创建了字典;kwargs 关键字参数参数
	print(kwargs)	#**kwargs创建了字典
	for i in kwargs:
		print('%s:%s' % (i, kwargs[i]))  # 根据参数可以打印任意相关信息了

	return


print_info(name='alex', age=18, sex='female', hobby='girl', nationality='Chinese', ability='Python')

  

###########################位置

def print_info(name, *args, **kwargs):   # 位置不能错  

# def print_info(name,**kwargs,*args):报错 print('Name:%s' % name) print('args:', args) print('kwargs:', kwargs) return print_info('alex', 18, hobby='girl', nationality='Chinese', ability='Python') #print_info(hobby='girl','alex',18,nationality='Chinese',ability='Python') #报错 # print_info('alex',hobby='girl',18,nationality='Chinese',ability='Python') #报错
#关于不定长参数的位置: *args放在左边,元组, *kwargs参数放在右边,字典
#若有默认参数,放左边。

  

函数的返回值return

要想获取函数的执行结果,就可以用return语句把结果返回

注意:

  1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
  2. 如果未在函数中指定return,那这个函数的返回值为None  
  3. return多个对象,解释器会把这多个对象组装成一个元组作为一个一个整体结果输出。

5.1 作用域介绍 

python中的作用域分4种情况:

  • L:local,局部作用域,即函数中定义的变量;
  • E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
  • G:globa,全局变量,就是模块级别定义的变量;
  • B:built-in,系统固定模块里面的变量,比如int, bytearray等。

搜索变量的优先级顺序依次是:作用域局部 >外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。

x = int(2.9)  # int built-in  系统固定模块里面的变量
 
g_count = 0  # global  全局变量
def outer():
    o_count = 1  # enclosing 嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
    def inner():
        i_count = 2  # local  局部作用域,即函数中定义的变量;局部作用于不能修改全局变量
        print(o_count)
    # print(i_count) 找不到
    inner() 
outer()
 
# print(o_count) #找不到

  

原文地址:https://www.cnblogs.com/BBS2013/p/13362638.html