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

多个域名的网站网站设计实验

多个域名的网站,网站设计实验,合肥企业网站制作,个人网站首页布局图在Python中可以定义可变参数#xff0c;顾名思义#xff0c;可变参数就是传入参数是可变的。可以是任意个#xff0c;以一个简单的数学编程为例#xff0c;计算 sum a * a b * b .....z * z 函数定义可以如下#xff1a; def getsum(num) :sum 0for n in num :sum su…在Python中可以定义可变参数顾名思义可变参数就是传入参数是可变的。可以是任意个以一个简单的数学编程为例计算 sum a * a b * b .....z * z 函数定义可以如下 def getsum(num) :sum 0for n in num :sum sum n * nreturn sum 但是调用的时候必须定义一个元组或者列表。比如getsum([1,2,3]) 如果利用可变参数调用函数的方式可以变成这样的话就方便的多比如getsum(1,2,3) 可以这么修改 def getsum(*num) :sum 0for n in num :sum sum n * nreturn sum 如果已经有一个list或者tuple要调用一个可变参数怎么办可以这样做 nums [1, 2, 3]calc(nums[0], nums[1], nums[2]) 14 这种写法当然是可行的问题是太繁琐所以Python允许你在list或tuple前面加一个*号把list或tuple的元素变成可变参数传进去 nums [1, 2, 3]calc(*nums) 14 函数的参数 阅读: 171893 定义函数的时候我们把参数的名字和位置确定下来函数的接口定义就完成了。对于函数的调用者来说只需要知道如何传递正确的参数以及函数将返回什么样的值就够了函数内部的复杂逻辑被封装起来调用者无需了解。 Python的函数定义非常简单但灵活度却非常大。除了正常定义的必选参数外还可以使用默认参数、可变参数和关键字参数使得函数定义出来的接口不但能处理复杂的参数还可以简化调用者的代码。 位置参数 我们先写一个计算x2的函数 def power(x):return x * x 对于power(x)函数参数x就是一个位置参数。 当我们调用power函数时必须传入有且仅有的一个参数x power(5) 25power(15) 225 现在如果我们要计算x3怎么办可以再定义一个power3函数但是如果要计算x4、x5……怎么办我们不可能定义无限多个函数。 你也许想到了可以把power(x)修改为power(x, n)用来计算xn说干就干 def power(x, n):s 1 while n 0: n n - 1 s s * x return s 对于这个修改后的power(x, n)函数可以计算任意n次方 power(5, 2) 25power(5, 3) 125 修改后的power(x, n)函数有两个参数x和n这两个参数都是位置参数调用函数时传入的两个值按照位置顺序依次赋给参数x和n。 默认参数 新的power(x, n)函数定义没有问题但是旧的调用代码失败了原因是我们增加了一个参数导致旧的代码因为缺少一个参数而无法正常调用 power(5) Traceback (most recent call last):File stdin, line 1, in module TypeError: power() missing 1 required positional argument: nPython的错误信息很明确调用函数power()缺少了一个位置参数n。 这个时候默认参数就排上用场了。由于我们经常计算x2所以完全可以把第二个参数n的默认值设定为2 def power(x, n2): s 1 while n 0: n n - 1 s s * x return s 这样当我们调用power(5)时相当于调用power(5, 2) power(5) 25power(5, 2) 25 而对于n 2的其他情况就必须明确地传入n比如power(5, 3)。 从上面的例子可以看出默认参数可以简化函数的调用。设置默认参数时有几点要注意 一是必选参数在前默认参数在后否则Python的解释器会报错思考一下为什么默认参数不能放在必选参数前面 二是如何设置默认参数。 当函数有多个参数时把变化大的参数放前面变化小的参数放后面。变化小的参数就可以作为默认参数。 使用默认参数有什么好处最大的好处是能降低调用函数的难度。 举个例子我们写个一年级小学生注册的函数需要传入name和gender两个参数 def enroll(name, gender):print(name:, name) print(gender:, gender) 这样调用enroll()函数只需要传入两个参数 enroll(Sarah, F) name: Sarah gender: F如果要继续传入年龄、城市等信息怎么办这样会使得调用函数的复杂度大大增加。 我们可以把年龄和城市设为默认参数 def enroll(name, gender, age6, cityBeijing): print(name:, name) print(gender:, gender) print(age:, age) print(city:, city) 这样大多数学生注册时不需要提供年龄和城市只提供必须的两个参数 enroll(Sarah, F) name: Sarah gender: F age: 6 city: Beijing只有与默认参数不符的学生才需要提供额外的信息 enroll(Bob, M, 7) enroll(Adam, M, cityTianjin)可见默认参数降低了函数调用的难度而一旦需要更复杂的调用时又可以传递更多的参数来实现。无论是简单调用还是复杂调用函数只需要定义一个。 有多个默认参数时调用的时候既可以按顺序提供默认参数比如调用enroll(Bob, M, 7)意思是除了namegender这两个参数外最后1个参数应用在参数age上city参数由于没有提供仍然使用默认值。 也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时需要把参数名写上。比如调用enroll(Adam, M, cityTianjin)意思是city参数用传进去的值其他默认参数继续使用默认值。 默认参数很有用但使用不当也会掉坑里。默认参数有个最大的坑演示如下 先定义一个函数传入一个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()时结果就不对了 add_end() [END, END]add_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 现在无论调用多少次都不会有问题 add_end() [END]add_end() [END]为什么要设计str、None这样的不变对象呢因为不变对象一旦创建对象内部的数据就不能修改这样就减少了由于修改数据导致的错误。此外由于对象不变多任务环境下同时读取对象不需要加锁同时读一点问题都没有。我们在编写程序时如果可以设计一个不变对象那就尽量设计成不变对象。 可变参数 在Python函数中还可以定义可变参数。顾名思义可变参数就是传入的参数个数是可变的可以是1个、2个到任意个还可以是0个。 我们以数学题为例子给定一组数字abc……请计算a2 b2 c2 ……。 要定义出这个函数我们必须确定输入的参数。由于参数个数不确定我们首先想到可以把abc……作为一个list或tuple传进来这样函数可以定义如下 def calc(numbers):sum 0 for n in numbers: sum sum n * n return sum 但是调用的时候需要先组装出一个list或tuple calc([1, 2, 3]) 14 calc((1, 3, 5, 7)) 84 如果利用可变参数调用函数的方式可以简化成这样 calc(1, 2, 3) 14 calc(1, 3, 5, 7) 84 所以我们把函数的参数改为可变参数 def calc(*numbers):sum 0 for n in numbers: sum sum n * n return sum 定义可变参数和定义一个list或tuple参数相比仅仅在参数前面加了一个*号。在函数内部参数numbers接收到的是一个tuple因此函数代码完全不变。但是调用该函数时可以传入任意个参数包括0个参数 calc(1, 2) 5calc() 0 如果已经有一个list或者tuple要调用一个可变参数怎么办可以这样做 nums [1, 2, 3]calc(nums[0], nums[1], nums[2]) 14 这种写法当然是可行的问题是太繁琐所以Python允许你在list或tuple前面加一个*号把list或tuple的元素变成可变参数传进去 nums [1, 2, 3]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。调用该函数时可以只传入必选参数 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} 关键字参数有什么用它可以扩展函数的功能比如在person函数里我们保证能接收到必选参数但是如果调用者愿意提供更多的参数我们也能收到 试想你正在做一个用户注册的功能除了用户名和年龄是必须的以外其他的都是可选项目利用关键字参数就可以完成这个要求。 和可变参数类似可以先组装出一个字典dict然后把dict传进去。 extra {city: Beijing, job: Engineer}person(Jack, 24, cityextra[city], jobextra[job]) name: Jack age: 24 other: {city: Beijing, job: Engineer 上面复杂的调用可以用简化的写法 extra {city: Beijing, job: Engineer}person(Jack, 24, **extra) name: Jack age: 24 other: {city: Beijing, job: Engineer} **extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数**kw将获得一个dict注意kw获得的dict是extra的一个拷贝对kw的改动不会影响到函数外的extra   命名关键字参数 对于关键字参数函数的调用者可以传入任意不受限制的关键字参数。至于到底传入了哪些需要在函数内部对kw进行检查 仍然以上述函数为例我们需要检查是否有city和job参数 def person(name, age, **kw):if city in kw:# 有city参数passif job in kw:# 有job参数passprint(name:, name, age:, age, other:, kw) 但是调用者仍可以传入不受限制的关键字参数 person(Jack, 24, cityBeijing, addrChaoyang, zipcode123456)   如果要限制关键字参数的名字就可以用命名关键字参数例如只接收city和job作为关键字参数。这种方式定义的函数如下 def person(name, age, *, city, job):print(name, age, city, job) 和关键字参数**kw不同命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数。       转载于:https://www.cnblogs.com/Commence/p/5578215.html
http://www.zqtcl.cn/news/876222/

相关文章:

  • 在火炉做网站公园坐什么车hexo wordpress 比较
  • 好的免费博客网站设计图软件
  • 网站建设合同电子版金融网站建设运营方案
  • 网站域名备案在哪里贵阳经济技术开发区网站
  • 戴尔公司网站建设成功的关键是什么网站商城建设公司
  • 用python做 网站论坛南宁网站建设 南宁联达亿
  • 做婚恋网站要多少钱网站首页页面设计多少钱
  • 营销型网站建设试卷wordpress怎么备份按在
  • 手机网站有什么区别是什么意思wordpress 推送公众号
  • 电子商务网站建设与运营app公司管理
  • 网站伪静态怎么设置优就业seo课程学多久
  • 网站开发实战 王做金融必看网站
  • 各种网站建设报价电子商务有限公司官网
  • wordpress前台用户注册网站设计 seo
  • 网站建设存在四个问题html国庆节网页制作代码
  • 棋牌网站搭建平台泡泡资源网
  • 河南网站建设培训wordpress个人博客前台模板下载
  • 做彩票网站电话多少做sohu最好的推广网站
  • 做网站前端广州市住房和建设水务局网站
  • 新手学做网站学哪些知识页优化软件
  • 2014网站怎么备案微信公众号开发网站开发
  • 怎么看一个网站是谁做的怎么做网站内容调研
  • 网站模板 修改erp登录入口
  • 沧州网站建设设计网站左侧浮动代码
  • 1天学会搭建营销网站ppt超链接网站怎么做
  • 兰州网站设计公司有哪些网站开发中如何实现gps定位
  • 做视频赚钱的网站大型网站权限设计
  • 黑龙江建设银行交通违法网站单页网站定义
  • 广东工程建设监理协会网站哈尔滨网站建设服务
  • 房产网站建设方案项目书wordpress调用微博