#python学习笔记 17/07/10
# !/usr/bin/evn python3
# -*- coding:utf-8 -*- import math
#函数 函数的 定义
#定义一个求绝对值函数
def abstruct(a):
if not isinstance (a, (int, float)):
raise TypeError("param must be a int or float type")
if a >= 0:
return a
else:
return -a # 如果我们定义好了 abstruct() 函数,那么我们再该目录下启动Python解释器,用from python_function.py import abstruct 来导入 abstruct()函数 #用pass 语句 定义一个空函数,方便我们写代码时,关注功能,而不是立即写出完整代码
def myTODO():
pass # 函数可以 返回多个值(其实是把多个值放到了一个tuple里,只是语法上省略了括号)
def weiyi(x,y,step,angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx,ny x,y = weiyi(100, 100, 60, math.pi / 6)
print(x ,y) # 一、必选参数
#函数的传递参数 位置参数,严格按顺序传递参数
#如 幂函数 x的n次方 其中第一个参数x是底,第二个参数n是指数
def pow(x, n):
s = 1
while n > 0:
n = n-1
s = s * x
return s #二、默认参数
#此时,如果pow()函数不传递 两个参数就会报错,但是我们经常要算平方,该怎么做呢?可以设置默认参数,如果不传递第二个参数,可以给他一个默认值
def power(x, n = 2):
s = 1
while n > 0:
n = n-1
s = s*x
return s #注意点: 1、必选参数在前,默认参数在后,2、设置默认参数,默认参数调用降低了函数调用的难度 3、默认参数必须是不可变的 None就是不可变的
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L #三、可变参数
#定义包含 可变参数 的函数 计算(a*a+b*b+c*c...)
def cacl(*numbers):
sum = 0
for n in numbers:
sum = sum + n*n
return sum #调用的时候
print("1*1 + 2*2 :", cacl(1, 2))#
print("1*1 + 2*2 + 3*3 :", cacl(1, 2, 3))# # 我们也可以 把一个定义好的 list 或者 tuple 转化为 可变参数
nums = [1,2,3,4]
print("平:方 1+到4 : " ,cacl(*nums)) # 四、关键字参数
#可变参数允许传入 0个或者 任意个参数,这些可变参数在函数调用时自动组装为一个tuple.而关键字允许你传入 0个 或任意个含参数名的参数这些关键字参数在内部自动组装为一个dict
def person(name, age, **kw):
print('name : ',name, 'age : ',age, 'other : ',kw) person('jim',23,city='NewYork',addr='five road') # 与可变参数类似,也可以组装出一个dict,然后把该dict转化为关键字传进去
extra = {"city":"ShangHai","job":"SE"}
person("Dive",28,city=extra['city'],job=extra['job'])
#或者
person("Dive",28,**extra) # 五、命名关键字参数
#对于关键字参数,函数调用者可以传入任意不受限制的关键字参数,至于到底传入了那些,就需要在函数内部通过kw检查
#如检查 person() 是否有 city 和 job 参数,此时,调用者人可以传入不受限制的关键字参数
def person(name, age, **kw):
if 'city' in kw:
#有city
pass
if 'job' in kw:
pass
print('name:', name, 'age:', age, 'other',kw) person('kiven',27,city='hangzhou',addr='xihu',zipcode='') #如果要限制关键字参数的名字,就可以用命名关键字参数。例如,只接受 city 和 job 作为关键字参数
def person(name, age, * ,city, job):
print(name, age, city, job)
#可以 这样调用,如果不传入 city 和job 将会抛出错误
person("xiaowang",28,city='Shanghai', job='SE') #命名关键字参数可以设置缺省值,从而简化调用
def person(name, age, * , city='Shanghai', job):
print(name, age, city, job)
#由于city在 person定义是设置了默认值,调用时,可不传入city 参数
person('xiaohuang',26,job="SE") # 参数组合 在定义 函数时,可以将 必选参数、默认参数、可变参数、关键字参数、命名关键字参数混合使用
def f(a, b , c = 0, *args, **kw):
print('a:', a, 'b:', b, 'c:', c, 'args:',args, 'kw',kw)
f(1,2)
f(1,2,c=3)
f(1,2,3,'a','b')
f(1,2,3,'a','b',x=99)
f(1,2,d=99,ext=None) #可以先定义 一个 tuple 和一个 dict,然后当做参数传入
args = (1,2,3,4)
kw = {'d':99, 'x':'#'} 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. Dubbo -- 系统学习 笔记 -- 示例 -- 多协议

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 多协议 可以自行扩展协议,参见:协议扩展 (1) 不同服务不同协议 比如:不同服务 ...

  2. Git Step by Step – (5) Git分支(branch)

    在前面两盘文章中介绍了Git的基本原理,都是理论知识.这篇文章我们再次回到实践中,看看Git分支(branch)的使用. 在代码版本控制工具中,都会有branch的概念.刚开始建立版本仓库的时候,我们 ...

  3. Python中定义函数时参数有默认值的小陷阱

    在定义函数的时候,如果函数的参数有默认值,有两种类型的参数,一种是整数,字符串这种不可变类型,另一种是列表这种可变类型,对于第一种情况没有什么特殊的地方,但是对于可变类型,有一个微妙的小陷阱. 可变类 ...

  4. javaweb项目中表单生成的验证码以及校验

    首先先来看一下项目的结构吧,有两个servlet,一个是进行验证码的生成以及存储的,一个是进行校验的,还有一个jsp页面是用来实现form表单的书写和展示: 我们只需要看这三个就行了,其他的自动忽略: ...

  5. (原创)Windows下使用android ADT工具dmtracedump.exe绘图

    在windows下使用dmtracedump绘图时,出现如下错误: 'dot' 不是内部或外部命令,也不是可运行的程序 或批处理文件. 应该是没有dot这个执行程序,安装:Graphviz程序,然后将 ...

  6. 《Windows内核编程》---系统线程和同步事件

    系统线程: 在驱动中生成的线程一般是系统线程,系统线程所在的进程名为“System”,用到的内核API函数是: NTSTATUS PsCreateSystemThread( OUT PHANDLE T ...

  7. Androd Toolbar 的简单使用(转)

    14年Android开发者大会提出了Android5.0 系统以及 材料设置 Material Design.在 材料设计中推出了大量的UI效果,其中某些功能 已添加进 兼容包,所以可以在低版本中来实 ...

  8. Makefile中的MAKECMDGOALS

      make 在执行时会设置一个特殊变量 -- "MAKECMDGOALS" ,该变量记录了命令行参数指定的终极目标列表,没有通过参数指定终极目标时此变量为空.该变量仅限于用在特殊 ...

  9. python tkinter教程-事件绑定

    一个Tkinter主要跑在mainloop进程里.Events可能来自多个地方,比如按键,鼠标,或是系统事件. Tkinter提供了丰富的方法来处理这些事件.对于每一个控件Widget,你都可以为其绑 ...

  10. python中的list和array的不同之处

    原文地址:  http://blog.csdn.net/liyaohhh/article/details/51055147#reply python中的list是python的内置数据类型,list中 ...