当前位置: 首页 > news >正文

什么软件是做网站模板的小程序源码大全

什么软件是做网站模板的,小程序源码大全,如何做某网站的移动客户端开发,怎么找缺钱的企业客户C里函数可以设置缺省参数#xff0c;Java不可以#xff0c;只能通过重载的方式来实现#xff0c;python里也可以设置默认参数,最大的好处就是降低函数难度#xff0c;函数的定义只有一个#xff0c;并且python是动态语言#xff0c;在同一名称空间里不能有想多名称的函数…C里函数可以设置缺省参数Java不可以只能通过重载的方式来实现python里也可以设置默认参数,最大的好处就是降低函数难度函数的定义只有一个并且python是动态语言在同一名称空间里不能有想多名称的函数如果出现了那么后出现的会覆盖前面的函数。def power(x, n2):s 1while n 0:n n - 1s s * xreturn s看看结果 power(5)25 power(5,3)125注意 必选参数在前默认参数在后否则Python的解释器会报错。建议*当函数有多个参数时把变化大的参数放前面变化小的参数放后面。变化小的参数就可以作为默认参数。默认参数也有坑看看下面的代码先定义一个list添加一个end再返回def add_end(L[]):L.append(END)return L看看调用结果 add_end([1, 2, 3])[1, 2, 3, END] add_end([x, y, z])[x, y, z, END] add_end()[END] add_end()[END, END] add_end()[END, END, END]这里需要解释一下Python函数在定义的时候默认参数L的值就被计算出来了即[]。此时L指向[]。所以如果L中的内容改变了下次调用引用的内容也就不再是[]了。所以要牢记一点定义默认参数必须指向不可变对象。可变参数第一种方法传入的参数为一个list或者tuple。def calc(numbers):sum 0for n in numbers:sum sum n * nreturn sum调用方式 calc([1, 2, 3])14 calc((1, 3, 5, 7))84第二种方式直接传入多个参数函数内部会自动用一个tuple接收。def calc(*numbers):sum 0for n in numbers:sum sum n * nreturn sum调用方式 calc(1, 2)5 calc()0这个时候如果还想把一个list或者tuple里的数据传进去可以这样 nums [1, 2, 3] calc(*nums)14关键字参数关键字参数允许你传入0个或任意个含参数名的参数这些关键字参数在函数内部自动组装为一个dict。def person(name, age, **kw):print name:, name, age:, age, other:, kw调用示例 person(Michael, 30)name: Michael age: 30 other: {} person(Bob, 35, cityBeijing)name: Bob age: 35 other: {city: Beijing} person(Adam, 45, genderM, jobEngineer)name: Adam age: 45 other: {gender: M, job: Engineer}参数组合在Python中定义函数可以用必选参数、默认参数、可变参数和关键字参数这4种参数都可以一起使用或者只用其中某些但是请注意参数定义的顺序必须是必选参数、默认参数、可变参数和关键字参数。递归函数基本的也没什么可讲的和Java/C里一样就是调用本身的一种。这里重点介绍一下尾递归优化。事实上尾递归和循环效果是一样的很显然的一个优点那就是可以防止递归调用栈溢出。定义在函数返回的时候调用自身并且return语句不能包含表达式。编译器或者解释器可以对其做优化无论调用多少次只占用一个栈帧不会出现溢出的情况。举个简单的例子以阶乘函数为例def fact(n):if n1:return 1return n * fact(n - 1)如果传入的n很大就可能会溢出这是由于return n * fact(n - 1)引入了乘法表达式就不是尾递归了。把代码改一下def fact(n):return fact_iter(n, 1)def fact_iter(num, product):if num 1:return productreturn fact_iter(num - 1, num * product)默认参数陷阱Python的函数定义提供了默认参数这个选择使得函数的定义和使用更加的灵活但是也会带来一些坑例如之前的一个例子函数定义def add_end(L[]):L.append(END)return L调用函数的结果 add_end([1, 2, 3])[1, 2, 3, END] add_end([x, y, z])[x, y, z, END] add_end()[END] add_end()[END, END] add_end()[END, END, END]很明显这个与函数的定义初衷不符用一句话解释就是Default values are computed once, then re-used.为了深入研究这个问题我们来看看另一个例子# codingutf-8def a():print a executedreturn []def b(xa()):print id(x):, id(x)x.append(5)print x:, xfor i in range(2):print 不带参数调用使用默认参数b()print b.__defaults__print id(b.__defaults__[0]):, id(b.__defaults__[0])for i in range(2):print 带参数调用传入一个listb(list())print b.__defaults__print id(b.__defaults__[0]):, id(b.__defaults__[0])NOTE:稍微解释一下所有默认值都存储在函数对象的__defaults__属性中这是一个列表每一个元素均为一个默认参数值。来看看输出结果a executed不带参数调用使用默认参数id(x): 140038854650552x: [5]([5],)id(b.__defaults__[0]): 140038854650552不带参数调用使用默认参数id(x): 140038854650552x: [5, 5]([5, 5],)id(b.__defaults__[0]): 140038854650552带参数调用传入一个listid(x): 140038854732400x: [5]([5, 5],)id(b.__defaults__[0]): 140038854650552带参数调用传入一个listid(x): 140038854732472x: [5]([5, 5],)id(b.__defaults__[0]): 140038854650552简单分析一下输出结果第1行在定义函数b()即执行def语句代码第7行def b(xa()):的时候这句话使用了默认参数所以在定义的时候会计算默认参数x的值这个时候会调用a()所以打印出了a executed。第2~6行第一次执行循环代码第14行调用b()没有传递参数使用默认参数此时x[]所以调用一次之后print b.__defaults__输出结果为([5],)第7~11行第二次循环代码第14行调用b()没有传递参数使用默认参数。注意默认参数只会计算一次也就是说那个内存区域就固定了但是这个地址所指向的是一个list内容可以改变此时由于上一次调用x: [5]所以print b.__defaults__输出结果为([5, 5],)第12~16行第二个循环语句第一次循环代码第20行传入一个空的list,所以不使用默认参数此时x[]所以print b.__defaults__输出结果为([5],)第18~21行第二个循环语句第二次循环代码第20行传入一个空的list,所以也不使用默认参数此时仍然是x[]所以print b.__defaults__输出结果依然为([5],)函数也是对象因此定义的时候就被执行默认参数是函数的属性它的值可能会随着函数被调用而改变。其他对象不都是如此吗牢记: 默认参数必须指向不变对象代码改一下如下# codingutf-8def a():print a executedreturn Nonedef b(xa()):print id(x):, id(x)if x is None:x []x.append(5)print x:, xfor i in range(2):print 不带参数调用使用默认参数b()print b.__defaults__print id(b.__defaults__[0]):, id(b.__defaults__[0])for i in range(2):print 带参数调用传入一个listb(list())print b.__defaults__print id(b.__defaults__[0]):, id(b.__defaults__[0])此时的输出结果看看是什么a executed不带参数调用使用默认参数id(x): 9568656x: [5](None,)id(b.__defaults__[0]): 9568656不带参数调用使用默认参数id(x): 9568656x: [5](None,)id(b.__defaults__[0]): 9568656带参数调用传入一个listid(x): 140725126699632x: [5](None,)id(b.__defaults__[0]): 9568656带参数调用传入一个listid(x): 140725126699704x: [5](None,)id(b.__defaults__[0]): 9568656希望与广大网友互动点此进行留言吧
http://www.pierceye.com/news/774705/

相关文章:

  • 如何创建商业网站为网站网站做代理被判缓刑
  • 个人备案做运营网站wordpress公众号源码
  • 营销网站服务器郑州金水区
  • 陕煤化建设集团铜川分公司网站大冶建设局网站
  • 网站如何制作django企业网站开发实例
  • 免费网站建设软件大全平面设计与网页设计
  • 建设网站 怀疑对方传销 网站制作 缓刑网站ip如何做跳转
  • 公司网站建设要求书网页怎么弄到桌面快捷方式
  • 做网站 公司 个体学校网站建设板块分析
  • 如何让百度更新网站收录wordpress图片处理类
  • 镜像网站能否做google排名企业做网站需要注意什么
  • 网站设计公司名称dz网站恢复数据库
  • 展示网站和营销网站的区别舆情分析师
  • 做网站用那一种语言最好网站推广指的是什么
  • 有哪些网站可以学做糕点的专业做网站建设公司怎么样
  • 广州网站排名怎么优化androidapp开发教程
  • 永顺网站建设网站建设免费建站
  • 建立一个网站需要多少钱?jquery网站后台模板
  • PHP网站开发工程师招聘营销型网站主机
  • 百度招聘 网站开发书画网站免费源码
  • 4s店网站建设贺贵江seo教程
  • 做网站的公司一般怎么培训销售wordpress引用php
  • 自己怎样做网站平台网页设计做网站首页
  • 费县做网站点石家装
  • 科技网站制作案例图片制作在线网页
  • 怀柔成都网站建设网络推广图片
  • 网站建设微信运营公司中国室内设计公司
  • app推广平台网站建设银行东营分行网站
  • 校园二手交易网站设计的原则群辉搭wordpress
  • 无锡网站建设网页制作seo网站优化培训要多少钱