一.参数陷阱 在使用默认参数时,可能碰见下列情况 def show_args_trap(i, li = []): li.append(100) li[i] = 101 print(li) show_args_trap(0) show_args_trap(1) show_args_trap(2) # 显示结果为: # [101] # [101, 101] # [101, 101, 101] 分析: 大家知道:含有默认参数的,不输入该参数就使用默认的值:在这里,第一次调用函数的时候,只传入一个参数0…
一.习题收藏 5.写函数,计算传入字符串中[数字].[字母].[空格] 以及 [其他]的个数,并返回结果. # def func4(s): # dic = { # 'num':0,'alpha':0,'space':0,'others':0 # } # for i in s: # if i.isdigit(): # dic['num'] += 1 # elif i.isalpha(): # dic['alpha'] +=1 # elif i.isspace(): # dic['space'] +…
[转]Python函数默认参数陷阱 阅读目录 可变对象与不可变对象 函数默认参数陷阱 默认参数原理 避免 修饰器方法 扩展 参考 请看如下一段程序: def extend_list(v, li=[]): li.append(v) return li list1 = extend_list(10) list2 = extend_list(123, []) list3 = extend_list('a') print(list1) print(list2) print(list3) print(li…
作业提升: s为字符串 s.isalnum() 所有字符都是字母或者数字 s.isalpha() 所有字符都是字母 s.isdigit() 所有字符否是数字 2. for i in range(1,10,3)的用法 从1到10,以步长为3 查找数据 即 1 4 7 10 3.   用Ture    和 False  来判断 4. 三元表达式  a if  a  > b  else  b    如果a>b成立  返回前面的a ,不成立返回最后b 今日主要内容 1. 动态参数  位置参数的动态参数…
命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的. 命名空间提供了在项目中避免名字冲突的一种方法.各个命名空间是独立的,没有任何关系的,所以一个命名空间中不能有重名,但不同的命名空间是可以重名而没有任何影响. 我们举一个计算机系统中的例子,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名. 一般有三种命名空间: 内置名称(built-in names), Python 语言内置的名称,比如…
一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.…
请看如下一段程序: def extend_list(v, li=[]): li.append(v) return li list1 = extend_list(10) list2 = extend_list(123, []) list3 = extend_list('a') print(list1) print(list2) print(list3) print(list1 is list3) 请先猜想打印的结果: 是不是这样: [10] [123] [a] False 但是,实际的打印效果 请…
一.动态参数: 动态参数是形参的一类 分为:动态位置参数(* + 函数名)表示 调用后返回的是元祖 动态关键字参数(** + 函数名)表示 形参的排列顺序: 位置参数     >   动态位置参数    >    默认值参数     >     动态关键字参数 如果 一个函数中 既有动态位置参数(*args)  又有 动态关键字参数(**kwargs),那么他将会是无敌的参数. 二.命名空间 1.分类 内置命名空间:python解释器中,内部存在的,如list,dict,tuple,in…
对于学习python的人都有这样的困惑 def foo(a=[]): a.append(5) return a Python新手希望这个函数总是返回一个只包含一个元素的列表:[5].结果却非常不同,而且非常惊人(对于新手来说): >>> foo() [5] >>> foo() [5, 5] >>> foo() [5, 5, 5] >>> foo() [5, 5, 5, 5] >>> foo() 实际上,这不是设计缺陷…
#闭包函数 def multiplier(factor): def multiplyByFactory(number): return number*factor return multiplyByFactory ) print()) print(multiplier()()) result: 10 24…