大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
python中range()函数的用法:
天等ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
(1)range(stop)
创建一个(0,stop)之间的整数序列,步长为1。
(2)range(start,stop)
创建一个(start,stop)之间的整数序列,步长为1。
(3)range(start,stop,step)
创建一个[start,stop)之间的整数序列,步长为step。
参数介绍:
start:表示从返回序列的起始编号,默认情况下从0开始。
stop:表示生成最多但不包括此数字的数字。
step:指的是序列中每个数字之间的差异,默认值为1。
相关介绍
range()是Python的内置函数,在用户需要执行特定次数的操作时使用它,表示循环的意思。内置函数range()可用于以列表的形式生成数字序列。在range()函数中最常见用法是使用for和while循环迭代序列类型(List,string等)。
简单的来说,range()函数允许用户在给定范围内生成一系列数字。根据用户传递给函数的参数数量,用户可以决定该系列数字的开始和结束位置以及一个数字与下一个数字之间的差异有多大。
Python 函数定义以及参数传递
1.函数定义
#形如def func(args...):
doSomething123
以关键字def 开头,后面是函数名和参数下面是函数处理过程。
举例:
def add( a, b ):
return a+b12
参数可以设定默认值,如:
def add( a, b=10 ): #注意:默认值参数只会运算一次
return a+b12
默认值参数只会运算一次是什么意思?
def func( a, b=[] ): #b的默认值指向一个空的列表,每次不带默认值都会指向这块内存
b.append(a) return b
print(func(1))#向默认的空列表里加入元素1 ,默认列表里已经是[1]print(func(2))#向默认的列表里加入元素2,默认列表里已经是[1,2]print(func(3,[]))#向b指向的空列表里加入元素1 ,默认列表里还是[1,2]print(func(4))#向默认的列表里加入元素4,默认列表里已经是[1,2,4]'''
结果:
[1]
[1, 2]
[3]
[1, 2, 4]
'''12345678910111213141516
这下明白为什么默认参数只计算一次了吧,函数参数不传递时默认值总是指向固定的内存空间,就是第一次计算的空间。
2.参数传递
def func(a, b):
print('a=%d, b=%d' % (a,b) )12
在使用函数时可以如下方式,结果都是相同的
func(10,20) #不使用参数名,需要按参数顺序传递func(a=10,b=20) #使用参数名可以不按顺序传递func(b=20,a=10)#结果:a=10, b=20a=10, b=20a=10, b=201234567
如果函数定义形式如下方式:
def func(*args): #这种定义会把传递的参数包成元组
print(args,type(args))
func(10,20)#结果:#(10, 20) class 'tuple'1234567
举一个和上述过程相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
a = (10, 20)
func(*a) #在调用函数使用`*`则会把元组解包成单个变量按顺序传入函数#结果:a=10, b=20123456
总结:*号在定义函数参数时,传入函数的参数会转换成元组,如果 *号在调用时则会把元组解包成单个元素。
另一种定义:
def func(**kw):#使用**定义参数会把传入参数包装成字典dict
print(kw, type(kw) )
func(a=10,b=20)#这种函数在使用时必须指定参数值,使用key=value这种形式#结果:{'b': 20, 'a': 10} class 'dict'12345
相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
d = {'a':10, 'b':20 }
func(**d) #在调用时使用**会把字典解包成变量传入函数。12345
def func(*args, **kw):#这种形式的定义代表可以接受任意类型的参数
print(args,kw )12
总结:**号在定义函数参数时,传入函数的参数会转换成字典,如果 **号在调用时则会把字典解包成单个元素。
lambda表达式
lambda表达式就是一种简单的函数
形如 f = lambda 参数1,参数2: 返回的计算值
例如:
add = lambda x,y: x+y
print(add(1,2))'''
结果:3
'''12345
4.6. 定义函数
我们可以创建一个用来生成指定边界的斐波那契数列的函数:
def fib(n): # write Fibonacci series up to n
... """Print a Fibonacci series up to n."""
... a, b = 0, 1
... while a n:
... print(a, end=' ')
... a, b = b, a+b
... print()
...
# Now call the function we just defined:
... fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
关键字 def 引入了一个函数 定义。在其后必须跟有函数名和包括形式参数的圆括号。函数体语句从下一行开始,必须是缩进的。
函数体的第一行语句可以是可选的字符串文本,这个字符串是函数的文档字符串,或者称为 docstring。(更多关于 docstrings 的信息请参考 文档字符串) 有些工具通过 docstrings 自动生成在线的或可打印的文档,或者让用户通过代码交互浏览;在你的代码中包含 docstrings 是一个好的实践,让它成为习惯吧。
函数 调用 会为函数局部变量生成一个新的符号表。确切的说,所有函数中的变量赋值都是将值存储在局部符号表。变量引用首先在局部符号表中查找,然后是包含函数的局部符号表,然后是全局符号表,最后是内置名字表。因此,全局变量不能在函数中直接赋值(除非用 global 语句命名),尽管他们可以被引用。
函数引用的实际参数在函数调用时引入局部符号表,因此,实参总是 传值调用 (这里的 值 总是一个对象 引用 ,而不是该对象的值)。[1] 一个函数被另一个函数调用时,一个新的局部符号表在调用过程中被创建。
一个函数定义会在当前符号表内引入函数名。函数名指代的值(即函数体)有一个被 Python 解释器认定为 用户自定义函数 的类型。 这个值可以赋予其他的名字(即变量名),然后它也可以被当作函数使用。这可以作为通用的重命名机制:
fib
f = fib
f(100)
0 1 1 2 3 5 8 13 21 34 55 89
如果你使用过其他语言,你可能会反对说:fib 不是一个函数,而是一个方法,因为它并不返回任何值。事实上,没有 return 语句的函数确实会返回一个值,虽然是一个相当令人厌烦的值(指 None )。这个值被称为 None (这是一个内建名称)。如果 None 值是唯一被书写的值,那么在写的时候通常会被解释器忽略(即不输出任何内容)。如果你确实想看到这个值的输出内容,请使用 print() 函数: