Python基础笔记:函数:调用函数定义函数函数的参数递归函数

Posted 从前有座山,山上

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础笔记:函数:调用函数定义函数函数的参数递归函数相关的知识,希望对你有一定的参考价值。

一、定义一个求二元一次方程的根的函数

#Sublime Text
import math
def ee(a,b,c):
    delta=b*b-4*a*c
    if delta<0:
        return \'null\'
    else:
        m=math.sqrt(delta)
        nx=(-b+m)/2/a
        ny=(-b-m)/2/a
        return nx,ny
#python解释器
>>> from hello import ee  #声明调用py文件中所定义的函数ee
>>> ee(1,0,9)
\'null\'
>>> ee(1,0,-9)
(3.0, -3.0)

二、函数的参数

函数的参数共有5类:位置参数、默认参数、可变参数、关键字参数、命名关键字参数

位置参数:

def pow(x):  
    return x*x  #求x的平方
    
def pow(x,n):
    if n==0:
        return 1
    if n==1:
        return x
    return x*pow(x,n-1)  #求x的任意次方

默认参数:

#默认求x平方
def pow(x,n=2):
    if n==0:
        return 1
    if n==1:
        return x
    return x*pow(x,n-1)

>>> from hello import pow
>>> pow(5)
25
>>> pow(5,3)
125
>>> pow(5,0)
1
#幼儿园新生等级,默认新生年龄为6,城市为ZZ
def sign_in(name,gender,Age=6,city=\'ZZ\'):
    print(name,gender,Age,city)

>>> sign_in(\'jiaxinwei\',\'boy\')
jiaxinwei boy 6 ZZ
>>> sign_in(\'jiaxinwei\',\'boy\',city=\'NY\')
jiaxinwei boy 6 NY

使用默认参数一个很大的坑:

解释:Python函数在定义的时候,默认参数L的值就被计算出来了,即[ ] , 因为默认参数 L 也是一个变量,它指向对象[ ],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[ ]了。

定义默认参数要牢记一点:默认参数必须指向不变对象(tuple,None,str)!!!

可变参数

可变参数顾名思义就是传入参数的个数是可变的,可以是任意多个

def calc(*nums):
    sum=0
    for n in nums:
        sum=sum+n*n
    return sum

>>> a=[1,2,3,4]
>>> calc(*a)
30
>>> calc(1,2,3,4)
30
>>> calc(a)

关键字参数

def person(name,age,**kw):
    print(\'name:\',name,\'age:\',age,\'other:\',kw)
#其中name,age是必选参数,kw是关键字参数。在调用该函数时,可以只传入必选参数,也可以传入任意个关键字参数,关键字参数在函数内部自动组装为一个dict。
>>> from hello import person
>>> person(\'jiaxinwei\',8) #1
name: jiaxinwei age: 8 other: {}
>>> person(\'jiaxinwei\',8,city=\'NY\',gender=\'M\') #2
name: jiaxinwei age: 8 other: {\'city\': \'NY\', \'gender\': \'M\'}
>>> extra={\'city\':\'Beijing\',\'job\':\'Student\'} #3
>>> person(\'jack\',24,**extra)
name: jack age: 24 other: {\'city\': \'Beijing\', \'job\': \'Student\'}

关键字参数的作用:是想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

命名关键字参数

如果要限制关键字参数的名字,就可以用命名关键字参数(不是很理解这句话)

def person(name, age, *, city, job):
    print(name, age, city, job)
# *号前面的是必选参数,后面的是命名关键字参数
#如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个分隔符了
def person(name,age,*args,city,job):
    print(name,age,args,city,job)
#命名关键字函数可以有缺省值
def person(name,age,*,city=\'Beijing\',job=\'student\'):
    print(name,age,city,job)

>>> from hello import person
>>> person(\'jiaxinwei\',11)
jiaxinwei 11 Beijing student

现在还不知道命名关键字函数在什么情况下使用,先mark,后补实例~

参数组合

在python中定义函数,可以混用各种参数,不过参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数、关键字参数。

所以对于任意函数,都可以通过类似 func(*args,**kw) 的形式调用它,无论它的参数是如何定义的。

虽然可以组合多达五种参数,但不要同时使用太多的组合,否则函数接口的可理解性很差。

 

编写程序:接收任意多数并计算乘积

def product(*nums):
    if len(nums)==0:
        sum=0
    else:
        sum=1
    for x in nums:
        sum*=x
    return sum

>>> from hello import product
>>> product()
0
>>> product(5)
5
>>> product(5,6,7)
210
>>> product(5,6,7,9)
1890

 

以上是关于Python基础笔记:函数:调用函数定义函数函数的参数递归函数的主要内容,如果未能解决你的问题,请参考以下文章

python自动化学习笔记之DAY15

python基础整理笔记

python 基础笔记-函数

python基础之函数v1

python 新手函数基础(函数定义调用值传递等)

python学习笔记2---函数