标签:一个 ems 可变参数 pen letter ram 引用 -- data
什么是函数?
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段
1.函数命名必须要以字母开头
>>> def a2_33():
... pass#pass表示不做任何操作,只是占位
...
>>> a2_33()#函数调用函数名加括号
>>>
练习:统计字母的个数
>>> def count_letter(s):
... result = 0
... for i in s:
... if i >=‘a‘ and i <=‘z‘:
... result +=1
... return result
...
>>> count_letter("1a2Drty")
4
练习:统计一句话里有多少个数字
>>> def f(s):
... result =0
... for i in s:
... if i >=‘0‘ and i <= ‘9‘:
... result +=1
... return result
...
>>> f("1a2b3c4d")
4
函数的传参
>>> def add(a,b):
... return a+b
...
>>> add(1,2)
3
def add(a,b):
if isinstance(a,(int,float,complex)) and isinstance(b,(int,float,complex)):#判断参数类型
return a+b# return有短路功能,所以不用写else
print("one of two parameters is not a number type!")
return None
print(add("a",2))
全局变量和局部变量
>>> n = 1#在函数外部定义的变量叫全局变量
>>> def func():
... n = 2#在函数内部定义的变量,叫局部变量,出了这个函数,这个局部变量就不生效了
... return n
...
>>> func()
2
>>> print(n)
1
>>> func =10
>>> func()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ‘int‘ object is not callable#不能重新给一个函数去赋值 否则会报错
>>>
必填参数:不可少
可选参数:当有默认值的时候不填也会使用默认值,无默认值时会使用传递的值,默认值必须放在非默认值后面
>>> def add(a,b=100):
... return a+b
...
>>> add(1)#使用默认值
101
>>>
>>> add(1,11)#传值
12
>>>
>>> add(b=1,a=11)#带参数名传值
12
>>>
>>> def add(a=100,b):
... return a+b
...
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument#默认值放在了非默认值前面,报错
返回多个参数
>>> def times_ten_bigger(a,b):
... return a*10,b*10
...
>>> a,b=times_ten_bigger(1,2)
>>> print(a)
10
>>> print(b)
20
>>>
参数命名的方式传值
>>> n=1
>>> def func():
... return n+1
...
>>> func()
2
>>>
2 可以这样写
3可以这样写 改为全局变量
>>> n=1
>>> def func():
... global n
... n+=1
... return n
...
>>> func()
2
>>> n
2
>>>
4 可以这样写
>>> n =1
>>> def func(a):
... a=a+1
... return a
...
>>> func(n)#n被当作一个参数传入
2
>>> n
1
>>>
n =[]
def func(a):
a.append(1)
可变参数,*c,存储为元祖
练习:
函数缺省值
>>> def add(a,b=100):
... return a+b
...
>>> print(add(10))
110
>>>
函数传入的参数为不可变的,对外部的变量没有影响
按值传。(传的不是变量对应的内存地址)
函数传入的参数为可变的,对外部的变量就会有影响
按引用传。(传的是变量对于的内存地址)
>>> a=100
>>> def f(a):
... a+=1
... return a
...
>>> f(a)
101
>>> a =[]
>>> def f(a):
... a.append(1)
... return a
...
>>> f(a)
[1]
>>> a
[1]
>>>
全局变量
>>> a =100
>>> def f():
... global a
... a+=1
... return a
...
>>> a
100
>>> f()
101
>>>
可变参数传递
>>> def f(a,b,*arg):
... print(type(arg))
... for i in arg:
... print(i)
...
>>> f(1,2,3)
<class ‘tuple‘>
3
>>> f(1,2,3,4)
<class ‘tuple‘>
3
4
>>> f(1,2,3,4,5,6,7)
<class ‘tuple‘>
3
4
5
6
7
>>>
练习:
写一个函数,使用可变参数计算函数所有参数之和
标签:一个 ems 可变参数 pen letter ram 引用 -- data
原文地址:https://www.cnblogs.com/wenm1128/p/11610313.html