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

做网站用什么数据库好用门户网站手机版

做网站用什么数据库好用,门户网站手机版,青岛昌隆文具网站是哪家公司做的,wordpress接入微信支付宝函数的参数定义函数的时候#xff0c;我们把参数的名字和位置确定下来#xff0c;函数的接口定义就完成了。对于函数的调用者来说#xff0c;只需要知道如何传递正确的参数#xff0c;以及函数将返回什么样的值就够了#xff0c;函数内部的复杂逻辑被封装起来#xff0c;… 函数的参数定义函数的时候我们把参数的名字和位置确定下来函数的接口定义就完成了。对于函数的调用者来说只需要知道如何传递正确的参数以及函数将返回什么样的值就够了函数内部的复杂逻辑被封装起来调用者无需了解。Python的函数定义非常简单但灵活度却非常大。除了正常定义的必选参数外还可以使用默认参数、可变参数和关键字参数使得函数定义出来的接口不但能处理复杂的参数还可以简化调用者的代码。位置参数位置参数又称必选参数必须以正确的顺序传入函数。调用时的数量必须和声明时的一样。我们先写一个计算x²的函数def power(x): return x * x对于power(x)函数参数x就是一个位置参数。当我们调用power函数时必须传入有且仅有的一个参数xprint(power(5))print(power(15))运行结果如下25225现在如果我们要计算x³怎么办可以再定义一个power3函数但是如果要计算x4、x5……怎么办我们不可能定义无限多个函数。你也许想到了可以把power(x)修改为power(x, n)用来计算x的n次方说干就干def power(x, n): s 1 while n 0: n n - 1 s s * x return s对于这个修改后的power(x, n)函数可以计算任意n次方print(power(5, 2))print(power(5, 3))运行结果如下25125修改后的power(x, n)函数有两个参数x和n这两个参数都是位置参数调用函数时传入的两个值按照位置顺序依次赋给参数x和n。默认参数新的power(x, n)函数定义没有问题但是旧的调用代码失败了原因是我们增加了一个参数导致旧的代码因为缺少一个参数而无法正常调用power(5)运行结果如下Traceback (most recent call last): power(5)TypeError: power() missing 1 required positional argument: nPython的错误信息很明确调用函数power()缺少了一个位置参数n。这个时候默认参数就排上用场了。由于我们经常计算x²所以完全可以把第二个参数n的默认值设定为2def power(x, n2): s 1 while n 0: n n - 1 s s * x return s这样当我们调用power(5)时相当于调用power(5, 2)print(power(5))print(power(5, 2))运行结果如下2525调用函数时默认参数的值如果没有传入则被认为是默认值。而对于n2的其他情况就必须明确地传入n比如print(power(5, 3))运行结果如下125从上面的例子可以看出默认参数可以简化函数的调用。设置默认参数时有几点要注意一是必选参数在前默认参数在后否则Python的解释器会报错二是如何设置默认参数。当函数有多个参数时把变化大的参数放前面变化小的参数放后面。变化小的参数就可以作为默认参数。使用默认参数有什么好处最大的好处是能降低调用函数的难度。举个例子我们写个一年级小学生注册的函数需要传入name和gender两个参数def enroll(name, gender): print(name:, name) print(gender:, gender)这样调用enroll()函数只需要传入两个参数enroll(张三, 男)运行结果如下name: 张三gender: 男如果要继续传入年龄、城市等信息怎么办这样会使得调用函数的复杂度大大增加。我们可以把年龄和城市设为默认参数def enroll(name, gender, age6, city北京): print(name:, name) print(gender:, gender) print(age:, age) print(city:, city)这样大多数学生注册时不需要提供年龄和城市只提供必须的两个参数enroll(张三, 男)运行结果如下name: 张三gender: 男age: 6city: 北京只有与默认参数不符的学生才需要提供额外的信息enroll(李四, 女, 7)enroll(王五, 男, city天津)运行结果如下name: 李四gender: 女age: 7city: 北京name: 王五gender: 男age: 6city: 天津可见默认参数降低了函数调用的难度而一旦需要更复杂的调用时又可以传递更多的参数来实现。无论是简单调用还是复杂调用函数只需要定义一个。有多个默认参数时调用的时候既可以按顺序提供默认参数比如调用enroll(李四, 女, 7)意思是除了namegender这两个参数外最后1个参数应用在参数age上city参数由于没有提供仍然使用默认值。也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时需要把参数名写上。比如调用enroll(王五, 男, city天津)意思是city参数用传进去的值其他默认参数继续使用默认值。默认参数很有用但使用不当也会掉坑里。默认参数有个最大的坑演示如下先定义一个函数传入一个list添加一个END再返回def add_end(L[]): L.append(END) return L当你正常调用时结果似乎不错print(add_end([1, 2, 3]))print(add_end([x, y, z]))运行结果如下[1, 2, 3, END][x, y, z, END]当你使用默认参数调用时一开始结果也是对的print(add_end())运行结果如下[END]但是再次调用add_end()时结果就不对了print(add_end())print(add_end())运行结果如下[END, END][END, END, END]很多初学者很疑惑默认参数是[]但是函数似乎每次都“记住了”上次添加了END后的list。原因解释如下Python函数在定义的时候默认参数L的值就被计算出来了即[]因为默认参数L也是一个变量它指向对象[]每次调用该函数如果改变了L的内容则下次调用时默认参数的内容就变了不再是函数定义时的[]了。所以定义默认参数要牢记一点默认参数必须指向不变对象要修改上面的例子我们可以用None这个不变对象来实现def add_end(LNone): if L is None: L [] L.append(END) return L现在无论调用多少次都不会有问题print(add_end())print(add_end())运行结果如下[END][END]为什么要设计str、None这样的不变对象呢因为不变对象一旦创建对象内部的数据就不能修改这样就减少了由于修改数据导致的错误。此外由于对象不变多任务环境下同时读取对象不需要加锁同时读一点问题都没有。我们在编写程序时如果可以设计一个不变对象那就尽量设计成不变对象。可变参数在Python函数中还可以定义可变参数。顾名思义可变参数就是传入的参数个数是可变的可以是1个、2个到任意个还可以是0个。我们以数学题为例子给定一组数字abc……请计算a² b² c² ……要定义出这个函数我们必须确定输入的参数。由于参数个数不确定我们首先想到可以把abc……作为一个list或tuple传进来这样函数可以定义如下def calc(numbers): sum 0 for n in numbers: sum sum n * n return sum但是调用的时候需要先组装出一个list或tupleprint(calc([1, 2, 3]))print(calc([1, 3, 5, 7]))运行结果如下1484如果利用可变参数调用函数的方式可以简化成这样print(calc(1, 2, 3))print(calc(1, 3, 5, 7))所以我们把函数的参数改为可变参数def calc(*numbers): sum 0 for n in numbers: sum sum n * n return sum定义可变参数和定义一个list或tuple参数相比仅仅在参数前面加了一个 *号。在函数内部参数numbers接收到的是一个tuple因此函数代码完全不变。但是调用该函数时可以传入任意个参数包括0个参数print(calc())运行结果如下0如果已经有一个list或者tuple要调用一个可变参数怎么办Python允许你在list或tuple前面加一个 *号把list或tuple的元素变成可变参数传进去nums [1, 2, 3]print(calc(*nums))运行结果如下14*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用而且很常见。关键字参数可变参数允许你传入0个或任意个参数这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数这些关键字参数在函数内部自动组装为一个dict。请看示例def person(name, age, **kw): print(name:, name, age:, age, other:, kw)函数person除了必选参数name和age外还接受关键字参数kw。在调用该函数时可以只传入必选参数print(person(张三, 30))运行结果如下name: 张三 age: 30 other: {}也可以传入任意个数的关键字参数person(李四, 35, city北京)person(王五, 45, gender女, job工程师)运行结果如下name: 李四 age: 35 other: {city: 北京}name: 王五 age: 45 other: {gender: 女, job: 工程师}关键字参数有什么用它可以扩展函数的功能。比如在person函数里我们保证能接收到name和age这两个参数但是如果调用者愿意提供更多的参数我们也能收到。试想你正在做一个用户注册的功能除了用户名和年龄是必填项外其他都是可选项利用关键字参数来定义这个函数就能满足注册的需求。和可变参数类似也可以先组装出一个dict然后把该dict转换为关键字参数传进去extra {city: 北京, job: 工程师}person(赵六, 24, **extra)运行结果如下name: 赵六 age: 24 other: {city: 北京, job: 工程师}**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的 **kw参数kw将获得一个dict注意kw获得的dict是extra的一份拷贝对kw的改动不会影响到函数外的extra。命名关键字参数对于关键字参数函数的调用者可以传入任意不受限制的关键字参数。至于到底传入了哪些就需要在函数内部通过kw检查。仍以person()函数为例我们希望检查是否有city和job参数def person(name, age, **kw): if city in kw: # 有 city 参数 pass if job in kw: # 有 job 参数 pass print(name:, name, age:, age, other:, kw)但是调用者仍可以传入不受限制的关键字参数person(赵六, 24, city北京, addr朝阳, zipcode123456)运行结果如下name: 赵六 age: 24 other: {city: 北京, addr: 朝阳, zipcode: 123456}如果要限制关键字参数的名字就可以用命名关键字参数例如只接收city和job作为关键字参数。这种方式定义的函数如下def person(name, age, *, city, job): print(name, age, city, job)和关键字参数 **kw不同命名关键字参数需要一个特殊分隔符 **后面的参数被视为命名关键字参数。调用方式如下person(李四, 24, city北京, job工程师)运行结果如下李四 24 北京 工程师命名关键字参数必须传入参数名这和位置参数不同。如果没有传入参数名调用将报错person(李四, 24, 北京, 工程师)运行结果如下Traceback (most recent call last): person(李四, 24, 北京, 工程师)TypeError: person() takes 2 positional arguments but 4 were given由于调用时缺少参数名city和jobPython解释器把这4个参数均视为位置参数但person()函数仅接受2个位置参数。命名关键字参数可以有缺省值从而简化调用def person(name, age, *, city北京, job): print(name, age, city, job)由于命名关键字参数city具有默认值调用时可不传入city参数person(李四, 24, job工程师)运行结果如下李四 24 北京 工程师使用命名关键字参数时要特别注意*不是参数而是特殊分隔符。如果缺少 *Python解释器将无法识别位置参数和命名关键字参数def person(name, age, city, job): # 缺少 *city 和 job 被视为位置参数    pass参数组合在Python中定义函数可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数这5种参数都可以组合使用除了可变参数无法和命名关键字参数混合。但是请注意参数定义的顺序必须是必选参数、默认参数、可变参数/命名关键字参数和关键字参数。比如定义一个函数包含上述若干种参数def f1(a, b, c0, *args, **kw): print(a , a, b , b, c , c, args , args, kw , kw)def f2(a, b, c0, *, d, **kw): print(a , a, b , b, c , c, d , d, kw , kw)在函数调用的时候Python解释器自动按照参数位置和参数名把对应的参数传进去。f1(1, 2)运行结果如下a 1 b 2 c 0 args () kw {}f1(1, 2, c3)运行结果如下a 1 b 2 c 3 args () kw {}f1(1, 2, 3, a, b)运行结果如下a 1 b 2 c 3 args (a, b) kw {}f1(1, 2, 3, a, b, x99)运行结果如下a 1 b 2 c 3 args (a, b) kw {x: 99}f2(1, 2, d99, extNone)运行结果如下a 1 b 2 c 0 d 99 kw {ext: None}最神奇的是通过一个tuple和dict你也可以调用上述函数args (1, 2, 3, 4)kw {d: 99, x: #}f1(*args, **kw)运行结果如下a 1 b 2 c 3 args (4,) kw {d: 99, x: #}args (1, 2, 3)kw {d: 88, x: #}f2(*args, **kw)运行结果如下a 1 b 2 c 3 d 88 kw {x: #}所以对于任意函数都可以通过类似func(*args, **kw)的形式调用它无论它的参数是如何定义的。小结Python的函数具有非常灵活的参数形态既可以实现简单的调用又可以传入非常复杂的参数。默认参数一定要用不可变对象如果是可变对象程序运行时会有逻辑错误要注意定义可变参数和关键字参数的语法*args是可变参数args接收的是一个tuple**kw是关键字参数kw接收的是一个dict。以及调用函数时如何传入可变参数和关键字参数的语法可变参数既可以直接传入func(1, 2, 3)又可以先组装list或tuple再通过 *args传入func(*(1, 2, 3))关键字参数既可以直接传入func(a1, b2)又可以先组装dict再通过 **kw传入func(**{a: 1, b: 2})。使用 *args和 **kw是Python的习惯写法当然也可以用其他参数名但最好使用习惯用法。命名的关键字参数是为了限制调用者可以传入的参数名同时可以提供默认值。定义命名的关键字参数不要忘了写分隔符 *否则定义的将是位置参数。
http://www.zqtcl.cn/news/378392/

相关文章:

  • 长沙网站维护公司建个门户网站
  • 做采集网站难不做科技的网站
  • 中小微企业服务平台seo怎么提升关键词的排名
  • 优秀企业网站欣赏店名设计wordpress文章列表添加字段
  • 有哪些做软件的网站服务器安装WordPress没有权限访问
  • app开发和网站开发公司网站怎么做百度竞价
  • 医疗机构网站备案网站建设面试常见问题
  • 建设网银登录网站国内欣赏电商设计的网站
  • 自适应网站优点缺点网站上的在线答题是怎么做的
  • 查询单位信息的网站免费学编程的网站有哪些
  • 建设企业网站进去无法显示wordpress 在线课程
  • 博客型网站建设广州网站建设如何做
  • 网站导航栏全屏怎么做万年网站建设
  • flash源码网站百度关键词价格
  • 个人网站如何发布怎么做记步数的程序到网站
  • 石家庄网站制作公司排名前十可视化网站开发工具有哪些
  • 网站个人博客怎么做杭州网站改版公司电话
  • 烟台北京网站建设公司中国建筑信息资讯网
  • 硬盘做网站空间高端网站设计杭州
  • 南昌网站建设方案网站建设需求分析班级
  • 汉阳做网站关键词站长工具
  • 做海报图片的网站营销软件
  • 能先做网站再绑定域名吗石家庄公司建设网站
  • 设计网站的收费图是怎么做的公司网站简介怎么做
  • 医院网站案例结合七牛云做视频网站
  • wordpress数据库缓存插件aso优化吧
  • 网站二维码代码国贸汽车网站建设
  • 医疗网站建设多少钱信息查询类网站是怎么做的
  • 网站开发辅助工具搜索引擎推广实训
  • 如何用手机制作网站比价网站