Python基础(普通函数及参数)
# def my_abs(x):
# if not isinstance(x,(int,float)):#参数类型做检查,只允许整数和浮点数类型的参数。数据类型检查可以用内置函数isinstance()
# raise TypeError('错误的数据类型')
# if x >= 0:
# return x
# else:
# return -x
# print(my_abs(-300))
# print(my_abs('abc')) # import math
# def move(x,y,step,angle=0):
# nx = x + step * math.cos(angle)
# ny = y + step * math.sin(angle)
# return nx,ny#返回值是一个tuple
# print(move(100,70,60,math.pi/6)) # def nop():
# pass#pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来
# print(nop()) #位置参数
# def add(x):
# return x + 1
# print(add(1)) #默认参数
#一是必选参数在前,默认参数在后,否则Python的解释器会报错。
#当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
# def power(x,n=2,y=6):
# s = 1
# print(y)
# while n > 0:
# n = n - 1
# s = s * x
# return s
# print(power(5,2))
# print(power(10))
# print(power(5,y=200))#默认参数可以指定参数名称来传参,y参数用传进去的值,其他默认参数继续使用默认值。 # #定义默认参数要牢记一点:默认参数必须指向不变对象l=[],用l=None这个不变对象来代替l=[]。
# def arr(l=None):
# if l is None:
# l = []
# l.append('abc')
# return l
# print(arr()) #可变参数
# def calc(*numbers):#定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号,函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变
# sum = 0
# for num in numbers:
# sum = sum + num * num
# return sum
# print(calc(1,2,3,4,5,6))
# print(calc())#调用该函数时,可以传入任意个参数,包括0个参数 # nums = [1,2,3,4,5,6,7,8,9]
# print(calc(*nums))#*nums表示把nums这个list的所有元素作为可变参数传进去 #关键字参数
# def person(name,age,**kw):#关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
# print('name',name,'age',age,'other',kw)
# person('傻狗1',100,city='傻狗2') # extra = {'city':'傻狗4','job':'傻狗5'}
# person('傻狗3',200,**extra)#相当于person('傻狗3', 200, city=extra['city'], job=extra['job'])
#**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra。 #命名关键字参数
# def person(name,age,*,city,job):#命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数
# print(name,age,city,job)
# person('傻狗1',100,city='傻狗3',job='傻狗4')
# def person(name,age,*args,city='傻狗2',job):#如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了
# print(name,age,args,city,job)
# arr = [1,2,3]
# person('傻狗1',100,*arr,city='傻狗2',job='傻狗3')
# person('傻狗1',100,*arr,job='傻狗3')#命名关键字参数city具有默认值,调用时,可不传入city参数 #参数组合
#可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
# def person(name,age=100,*args,city,**kw):
# print(name,age,args,city,kw)
# arr = [1,2,3]
# extra = {'job1':'傻狗3','job2':'傻狗4'}
# person('傻狗1',200,*arr,city='傻狗2',**extra) # arr1 = ['傻狗1',200,1,2,3]
# extra1 = {'city':'傻狗2','job1':'傻狗3','job2':'傻狗4'}
# person(*arr1,**extra1)#对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的 def product(*args):
sum = 1
for num in args:
sum = num * sum
return sum
arr = 1,2,3,4,5,6
print(product(*arr)) #默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误。
#*args是可变参数,args接收的是一个tuple。
#**kw是关键字参数,kw接收的是一个dict。
#可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3))。
#关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。
Python基础(普通函数及参数)的更多相关文章
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
- python基础——返回函数
python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...
- python基础——sorted()函数
python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...
- python基础——filter函数
python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
- Python基础__函数
本节将进入函数的介绍,函数是Python基础中最精彩的部分之一,接下来将对函数做详细介绍.函数 函数就是对代码进行一个封装.把实现某一功能的代码进行封装到一起.下次需要使用时不需要进行编写代码直接调用 ...
- python基础——匿名函数及递归函数
python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...
- 八. Python基础(8)--函数
八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x): ' ...
- python基础之函数详解
Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...
- Python入门篇-函数、参数及参数解构
Python入门篇-函数.参数及参数解构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数概述 1>.函数的作用即分类 函数 数学定义:y=f(x) ,y是x的函数,x ...
- python3 速查参考- python基础 6 -> 函数编程之参数、变量、作用域、递归、匿名函数 lambda
函数基础 1. 速查笔记 #-- 函数相关的语句和表达式 myfunc('spam') # 函数调用 def myfunc(): # 函数定义 return None # 函数返回值 global a ...
随机推荐
- Python如何连接Mysql及基本操作
什么要做python连接mysql,一般是解决什么问题的 做自动化测试时候,注册了一个新用户,产生了多余的数据,下次同一个账号就无法注册了,这种情况怎么办呢?自动化测试都有数据准备和数据清理的操作,如 ...
- IdentityServer4[3]:使用客户端认证控制API访问(客户端授权模式)
使用客户端认证控制API访问(客户端授权模式) 场景描述 使用IdentityServer保护API的最基本场景. 我们定义一个API和要访问API的客户端.客户端从IdentityServer请求A ...
- Filter和Interceptor
Filter的使用 拦截user下的所有请求 @WebFilter("/user/*") public class UserFilter implements Filter { @ ...
- java统一返回标准类型
一.前言.背景 在如今前后端分离的时代,后端已经由传统的返回view视图转变为返回json数据,此json数据可能包括返回状态.数据.信息等......因为程序猿的习惯不同所以返回json数据的格式也 ...
- Linux下iptables学习笔记
Linux下iptables学习笔记 在Centos7版本之后,防火墙应用已经由从前的iptables转变为firewall这款应用了.但是,当今绝大多数的Linux版本(特别是企业中)还是使用的6. ...
- 前段---css
css主要是用来做如何显示html元素的 当浏览器读到一个样式表,它就会按照这个样式表来对文档做渲染 注意:每一个css样式表都是由两个部分组成的, 1,选择器 2,声明 声明又包括属性值和属性,每个 ...
- 用 @Value("${xxxx}")注解从配置文件读取值的用法
1. 用法: 从配置properties文件中读取init.password 的值. @Value("${init.password}") private String init ...
- Frida高级逆向-Hook Native(Java So)2
Frida Hook So 一些操作说明 Native方法第一个参数是 JNIEnv *env 如何在Frida中获取 JNIEnv 对象呢? Java.vm.getEnv(); 如何将string类 ...
- iOS平台 | 快速集成华为AGC认证服务
介绍 如何让用户根据已有的账号来进行登录注册呢?在应用中集成华为AGC认证服务SDK来轻松快速地实现这个功能. 本篇内容根据官网文档指导集成过程总结完成,关于集成步骤,官网的资料写的有点多,现在我总结 ...
- 更好的 java 重试框架 sisyphus 入门简介
What is Sisyphus sisyphus 综合了 spring-retry 和 gauva-retrying 的优势,使用起来也非常灵活. 为什么选择这个名字 我觉得重试做的事情和西西弗斯很 ...