Python-函数基础篇
Posted 夜尽天已明
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-函数基础篇相关的知识,希望对你有一定的参考价值。
函数基础
函数定义好了之后并不会自动执行,需要调用才会被执行
### 函数命名规范
* 函数名也是一个标识符
* 由数字、字符下划线组成,不能以数字开头,严格区分大小写,不能使用关键字
* 遵守命名规范,使用下划线连接,顾名思义
def tell_story():
print(\'春眠不觉晓\')
print(\'处处闻啼鸟\')
print(\'夜来风雨声\')
print(\'花落知多少\')
tell_story()
* 函数声明时,括号里的参数我们称之为形式参数,简称形参
* 形参的值是不确定的,只是用来占位的
def hello(person1,person2):
print(person1 + \'对\' + person2 + \'说:"hello!"\')
调用函数时传递数据
函数调用时传入的参数,才是真正参与运算的数据,我们称之为实参,
hello(\'张三\',"李四") # 会把实参一一对应的传递,交给形参处理
还可以通过定义变量名的形式给形参赋值
hello(person1="李四",person2="张三")
### 函数的返回值
> 函数的返回值就是函数执行的结果,并不是所有的函数都必须要有返回值
def add(a,b):
c = a + b # 变量c在外部是不可见的,只能在函数内部使用
return c # return 表示一个函数的执行结果
获取到add函数的结果,然后再求结果的4次方
result = add(1,2)
print(result ** 4)
print 就是一个内置函数
x = print("hello")
print(x) #None
### 函数的注释
def add(a,b):
"""
这个函数用来将两个数字相加
"""
return a + b
print(add(1,3))
help(add) #
def add(a:int,b:int): #函数不限制参数类型,只给参数建议类型
return a + b
z = add(\'hello\',\'world\' )
print(z)
### 函数调用函数
def test1():
print(\'test1开始了\')
print(\'test1结束了\')
def test2():
print(\'test2开始了\')
test1()
print(\'test2结束了\')
test2()
* 定义函数求[n,m]直接所有整数之和
def add(n,m):
x = 0
for i in range(n,m):
x += i
return x
result = add(0,101)
print(result)
* 求一个N的阶乘
def fac(n):
x = 1
for i in range(1,n+1):
x *= i
return x
print(fac(5))
* 计算m阶乘的和 m = 6 ==> 1!+2!+3!+4!+5!+6!
def fac_sum(m):
x = 0
y = 1
for i in range(1,m+1):
y *= i
x += y
return x
print(fac_sum(5))
def fac_sum(m):
x = 0
for i in range(1,m+1):
x += fac(i)
return x
print(fac_sum(5))
### 默认参数的使用
def say_hello(name,age,city="北京"): # 缺省参数要写到最后,形参xity设置了一个默认值
print(\'大家好,我是{},我今年{}岁了,我来自{}\'.format(name,age,city))
say_hello(\'jack\',19) # 如果没有传递city的参数,使用默认值"北京"
say_hello(name = \'tony\',age = 23)
如果有位置参数和关键字参数的话,关键字参数一定要放到位置参数的后面,
say_hello(\'jerry\',age=24) # jerry要写到前面,不然报错
有些函数的参数是,如果你传递了参数就使用传递的参数,如果没有传递参数,就使用默认的值
print函数里end就是一个缺省参数,
print(\'hello world\',end="---")
print(\'hi\')
print(\'hello\',\'nihao\',sep="****")
print(\'hjiijjk\')
### 可变参数的使用
*args 表示可变位置参数 ,最低需要两个参数,**kwargs 表示可变的关键字参数
def add(a,b,*args):
print(\'a = {},b = {}\'.format(a,b))
print(\'args = {}\'.format(args)) # 多出来的可变参数会以元组的形式保存到args里
c = a + b
for i in args:
c += i
return c
print(add(1,3,4,9,8,2))
def add(a,b,*args,mul = 1,**kwargs):
print(kwargs) #kwagrs是以字典的方式存放
add(1,2,3,4,5,c = 1,d = 2)
### 可变数据类型和不可变数据类型的传参
def test(a):
a = 100
def demo(nums):
nums[0] = 10
x = 1
test(x)
print(x)
y = [3,4,5,6,2]
demo(y)
print(y)
## 函数的注意事项
* 函数的三要素: 函数名,参数和返回值
* 在有一些编程语言里,允许函数重名,python里不允许函数的重名,如果函数重名了,后一个函数会覆盖前一个函数
* python里函数名也可以理解成为一个变量名
def test(x): # test ==一个函数
print(\'good,x={}\'.format(x))
test = 5 # 重新赋值5给test了
test(3) # 5不能作为函数来调用
TypeError: \'int\' object is not callable
### 递归函数的使用
count = 0
def test():
print(\'test\')
global count
count += 1
if count < 5:
test()
test()
* 求1~n的和
def get_num(n):
if n == 0:
return 0
return get_num(n-1) + n
print(get_num(6))
* 使用递归求n!
def fac(n):
if n == 1:
return 1
return fac(n - 1) * n
print(fac(6))
* 使用递归求斐波那契数列的第N个数字
def fib(n):
if n ==2 or n == 1:
return 1
return fib(n-1) + fib(n -2)
print(fib(4))
### 匿名函数
用lambda 关键词可以创建一个小型匿名函数,省去使用def声明函数的操作
#lambda函数的语法只包含一个语句,如下:
lambda 参数列表:运算表达式
def add(a,b):
return a + b
x = add(4,5)
print(x)
fn = add # 相当于给函数起了一个别名
print(fn(6,5))
除了使用def关键字定义一个函数外,还能使用lambda表达式定义一个函数
lambda a,b : a + b #匿名函数,用来表达一个简单的函数,函数的调用次数很少,基本就是调用一次
调用匿名函数的两种方法:
给他定义一个名字,很少这样使用
把这个函数当做参数传给另一个函数来使用,这样的场景比较多
mul = lambda a,b : a + b
print(mul(4,5))
def calc(a,b,fn):
c = fn(a,b)
return c
def add(x,y):
return x + y
def minus(x,y):
return x - y
print(calc(5,6,add))
print(calc(10,5,minus))
x3 = calc(5,7,lambda x,y: x + y)
print(x3)
x3 = calc(5,7,lambda x,y: x * y)
print(x3)
x3 = calc(5,7,lambda x,y: x - y)
print(x3)
x3 = calc(5,7,lambda x,y: x / y)
print(x3)
以上是关于Python-函数基础篇的主要内容,如果未能解决你的问题,请参考以下文章