1. #python学习笔记 17/07/10
  2. # !/usr/bin/evn python3
  3. # -*- coding:utf-8 -*-
  4.  
  5. import math
  6. #函数 函数的 定义
  7. #定义一个求绝对值函数
  8. def abstruct(a):
  9. if not isinstance (a, (int, float)):
  10. raise TypeError("param must be a int or float type")
  11. if a >= 0:
  12. return a
  13. else:
  14. return -a
  15.  
  16. # 如果我们定义好了 abstruct() 函数,那么我们再该目录下启动Python解释器,用from python_function.py import abstruct 来导入 abstruct()函数
  17.  
  18. #用pass 语句 定义一个空函数,方便我们写代码时,关注功能,而不是立即写出完整代码
  19. def myTODO():
  20. pass
  21.  
  22. # 函数可以 返回多个值(其实是把多个值放到了一个tuple里,只是语法上省略了括号)
  23. def weiyi(x,y,step,angle=0):
  24. nx = x + step * math.cos(angle)
  25. ny = y - step * math.sin(angle)
  26. return nx,ny
  27.  
  28. x,y = weiyi(100, 100, 60, math.pi / 6)
  29. print(x ,y)
  30.  
  31. # 一、必选参数
  32. #函数的传递参数 位置参数,严格按顺序传递参数
  33. #如 幂函数 x的n次方 其中第一个参数x是底,第二个参数n是指数
  34. def pow(x, n):
  35. s = 1
  36. while n > 0:
  37. n = n-1
  38. s = s * x
  39. return s
  40.  
  41. #二、默认参数
  42. #此时,如果pow()函数不传递 两个参数就会报错,但是我们经常要算平方,该怎么做呢?可以设置默认参数,如果不传递第二个参数,可以给他一个默认值
  43. def power(x, n = 2):
  44. s = 1
  45. while n > 0:
  46. n = n-1
  47. s = s*x
  48. return s
  49.  
  50. #注意点: 1、必选参数在前,默认参数在后,2、设置默认参数,默认参数调用降低了函数调用的难度 3、默认参数必须是不可变的 None就是不可变的
  51. def add_end(L=None):
  52. if L is None:
  53. L = []
  54. L.append('END')
  55. return L
  56.  
  57. #三、可变参数
  58. #定义包含 可变参数 的函数 计算(a*a+b*b+c*c...)
  59. def cacl(*numbers):
  60. sum = 0
  61. for n in numbers:
  62. sum = sum + n*n
  63. return sum
  64.  
  65. #调用的时候
  66. print("1*1 + 2*2 :", cacl(1, 2))#
  67. print("1*1 + 2*2 + 3*3 :", cacl(1, 2, 3))#
  68.  
  69. # 我们也可以 把一个定义好的 list 或者 tuple 转化为 可变参数
  70. nums = [1,2,3,4]
  71. print("平:方 1+到4 : " ,cacl(*nums))
  72.  
  73. # 四、关键字参数
  74. #可变参数允许传入 0个或者 任意个参数,这些可变参数在函数调用时自动组装为一个tuple.而关键字允许你传入 0个 或任意个含参数名的参数这些关键字参数在内部自动组装为一个dict
  75. def person(name, age, **kw):
  76. print('name : ',name, 'age : ',age, 'other : ',kw)
  77.  
  78. person('jim',23,city='NewYork',addr='five road')
  79.  
  80. # 与可变参数类似,也可以组装出一个dict,然后把该dict转化为关键字传进去
  81. extra = {"city":"ShangHai","job":"SE"}
  82. person("Dive",28,city=extra['city'],job=extra['job'])
  83. #或者
  84. person("Dive",28,**extra)
  85.  
  86. # 五、命名关键字参数
  87. #对于关键字参数,函数调用者可以传入任意不受限制的关键字参数,至于到底传入了那些,就需要在函数内部通过kw检查
  88. #如检查 person() 是否有 city 和 job 参数,此时,调用者人可以传入不受限制的关键字参数
  89. def person(name, age, **kw):
  90. if 'city' in kw:
  91. #有city
  92. pass
  93. if 'job' in kw:
  94. pass
  95. print('name:', name, 'age:', age, 'other',kw)
  96.  
  97. person('kiven',27,city='hangzhou',addr='xihu',zipcode='')
  98.  
  99. #如果要限制关键字参数的名字,就可以用命名关键字参数。例如,只接受 city 和 job 作为关键字参数
  100. def person(name, age, * ,city, job):
  101. print(name, age, city, job)
  102. #可以 这样调用,如果不传入 city 和job 将会抛出错误
  103. person("xiaowang",28,city='Shanghai', job='SE')
  104.  
  105. #命名关键字参数可以设置缺省值,从而简化调用
  106. def person(name, age, * , city='Shanghai', job):
  107. print(name, age, city, job)
  108. #由于city在 person定义是设置了默认值,调用时,可不传入city 参数
  109. person('xiaohuang',26,job="SE")
  110.  
  111. # 参数组合 在定义 函数时,可以将 必选参数、默认参数、可变参数、关键字参数、命名关键字参数混合使用
  112. def f(a, b , c = 0, *args, **kw):
  113. print('a:', a, 'b:', b, 'c:', c, 'args:',args, 'kw',kw)
  114. f(1,2)
  115. f(1,2,c=3)
  116. f(1,2,3,'a','b')
  117. f(1,2,3,'a','b',x=99)
  118. f(1,2,d=99,ext=None)
  119.  
  120. #可以先定义 一个 tuple 和一个 dict,然后当做参数传入
  121. args = (1,2,3,4)
  122. kw = {'d':99, 'x':'#'}
  123.  
  124. f(*args, **kw)

python3学习笔记(4)_function-参数的更多相关文章

  1. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  2. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  3. python3学习笔记(5)_slice

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...

  4. golang学习笔记8 beego参数配置 打包linux命令

    golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/mvc/contro ...

  5. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  6. python3学习笔记(6)_iteration

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...

  7. python3学习笔记(9)_closure

    #python 学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #从高阶函数的定义,我们可以知道,把函数作为参数的函数, ...

  8. python3学习笔记(8)_sorted

    # python学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #python 内置sorted()函数 可以对list进 ...

  9. Python3学习笔记01-环境安装和运行环境

    最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...

随机推荐

  1. vux 使用 font-awesome

    1)XIcon 太多坑,不好用,无奈之下,搞了一下 font-awesome 2)下载 font-awesome 源码,并放置到 根目录/src 目录下 ,传送门:http://fontawesome ...

  2. iOS开发-获取子视图坐标系中Point、Rect在父视图坐标系中的实际值

    iOS提供了方法来完成上述值得转换 convertRect:toView:, convertRect:FromView: convertPoint:toView: and convertPoint:f ...

  3. 全屏加载loading显示的解决方法

    step1:可以在网页里加一个div用来现实loading. <div id="loading"> <!--这里放你的loading时显示的动画或者文字--> ...

  4. weblogic12C出现“java.lang.ArrayIndexOutOfBoundsException: 48188”

    最近将10G的一个项目转移到12C出现数组越界的问题: 解决办法:  jaxen-1.1.1.jarxom-1.0.jaricu4j-2.6.1.jar  把项目中这三个jar包删除后就可以正常部署了 ...

  5. 资源打包Assetbundle .

    在手游的运营过程中,更新资源是比不可少的.资源管理第一步是资源打包.传统的打包可以将所有物件制成预设Prefab,打包成场景.今天我们来一起学习官方推荐的Assetbundle,它是Unity(Pro ...

  6. Installing Python Modules

    Email: distutils-sig@python.org As a popular open source development project, Python has an active s ...

  7. React Native(十四)——Slider

    最近我们rn版的App快要内测了,小伙伴们都在积极的改bug,于是在其中就遇到了关于Slider的部分小知识,特地记录自己用到的部分属性,也许恰好会帮助到用到该组件的你: 属性罗列(https://r ...

  8. UISegmentedControl的基本用法

    本文转载至 http://www.tuicool.com/articles/yUfURj 原文  http://blog.csdn.net/hmt20130412/article/details/38 ...

  9. codeforces水题100道 第十五题 Codeforces Round #262 (Div. 2) A. Vasya and Socks (brute force)

    题目链接:http://www.codeforces.com/problemset/problem/460/A题意:Vasya每天用掉一双袜子,她妈妈每m天给他送一双袜子,Vasya一开始有n双袜子, ...

  10. .vimrc设置说明

    在终端下使用vim进行编辑时,默认情况下, 编辑的界面上是没有显示行号.语法高亮度显示.智能缩进等功能的. 为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc. 在启动vim时,当前 ...