python3学习笔记(4)_function-参数
- #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-参数的更多相关文章
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- Python3学习笔记 - 准备环境
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...
- python3学习笔记(5)_slice
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...
- golang学习笔记8 beego参数配置 打包linux命令
golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/mvc/contro ...
- python3学习笔记(7)_listComprehensions-列表生成式
#python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...
- python3学习笔记(6)_iteration
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...
- python3学习笔记(9)_closure
#python 学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #从高阶函数的定义,我们可以知道,把函数作为参数的函数, ...
- python3学习笔记(8)_sorted
# python学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #python 内置sorted()函数 可以对list进 ...
- Python3学习笔记01-环境安装和运行环境
最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...
随机推荐
- vux 使用 font-awesome
1)XIcon 太多坑,不好用,无奈之下,搞了一下 font-awesome 2)下载 font-awesome 源码,并放置到 根目录/src 目录下 ,传送门:http://fontawesome ...
- iOS开发-获取子视图坐标系中Point、Rect在父视图坐标系中的实际值
iOS提供了方法来完成上述值得转换 convertRect:toView:, convertRect:FromView: convertPoint:toView: and convertPoint:f ...
- 全屏加载loading显示的解决方法
step1:可以在网页里加一个div用来现实loading. <div id="loading"> <!--这里放你的loading时显示的动画或者文字--> ...
- weblogic12C出现“java.lang.ArrayIndexOutOfBoundsException: 48188”
最近将10G的一个项目转移到12C出现数组越界的问题: 解决办法: jaxen-1.1.1.jarxom-1.0.jaricu4j-2.6.1.jar 把项目中这三个jar包删除后就可以正常部署了 ...
- 资源打包Assetbundle .
在手游的运营过程中,更新资源是比不可少的.资源管理第一步是资源打包.传统的打包可以将所有物件制成预设Prefab,打包成场景.今天我们来一起学习官方推荐的Assetbundle,它是Unity(Pro ...
- Installing Python Modules
Email: distutils-sig@python.org As a popular open source development project, Python has an active s ...
- React Native(十四)——Slider
最近我们rn版的App快要内测了,小伙伴们都在积极的改bug,于是在其中就遇到了关于Slider的部分小知识,特地记录自己用到的部分属性,也许恰好会帮助到用到该组件的你: 属性罗列(https://r ...
- UISegmentedControl的基本用法
本文转载至 http://www.tuicool.com/articles/yUfURj 原文 http://blog.csdn.net/hmt20130412/article/details/38 ...
- 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双袜子, ...
- .vimrc设置说明
在终端下使用vim进行编辑时,默认情况下, 编辑的界面上是没有显示行号.语法高亮度显示.智能缩进等功能的. 为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc. 在启动vim时,当前 ...