零基础入门Python3-函数详解(1)

我们通过一种运算方法,把一个数字运算成另一个数字,每次需要运算的数字都是不同的,但是运算方法都是一致的。如果每次运算都需要定义和编写相同代码,那我们的工作量简直太大了。函数就是对应的解决办法,输入对象,通过相同的计算,得到相应的结果,这个调用过程就叫做函数。

1、定义函数

def 函数名称():

        语句1

        语句2

        ......

        return xxx

def是定义函数的标识,这个是不能丢的。然后函数名称和变量定义的规则是一致的,不能以数字开头等,冒号必须写在最后。语句就是我们需要编写的功能代码。return xxx代表的是调用函数后返回值。

#实例1

def func():

print('这是函数')

        return True

#这里的func就是定义的函数名称,print('这是函数')是函数的内容,return True为返回值为真。

2、调用函数

我们上面讲到,定义函数的时候有一个函数名,这个函数名就是在调用函数使用使用的。

#调用没有参数的函数语法

函数名()

#调用有参数的函数语法

函数名(参数1,参数2,......)

#实例

func()

>>>这是函数

#这里输出的字符串就是我们刚才func函数的功能代码里面的输出结果。

3、函数的参数

函数的参数分为位置参数、默认参数、可变参数、关键字参数、命名关键字参数。

(1)位置参数

位置参数就是按照定义函数时,相对应的函数位置的值进行赋值。

def    函数名称(位置参数1、位置参数2、......):

        语句1

        语句2

        ......

        return  xxx

#实例1

def  func(name,age):

print('My name is {0},i am {1} year old'.format(name,age))

        return True

func('zhangsan','18')

>>>My name is zhangsan,i am 18 year old

#  func是函数名称,name、age是函数的参数,print(xxx)是函数的功能代码,return True为返回真。func('zhangsan','18')为调用代码。

#在我们调用函数的时候,我们并没有给参数进行赋值,而是直接输入相对应的值。我们已经知道,func函数的第一个参数就是name,调用函数是,按照相应位置,第一个参数输入name的值。第二个位置的参数是age,调用参数的时候值就是age的值。这就是位置参数。

但是,我们这个函数还是有点不严谨,如果我们在name变量的位置输入一个数字,在age变量的位置输入一个字符串,那输出的结果就不伦不类了。

#调用以上代码

func(20,'lisi')

>>>My name is 20,i am lisi year old

# 第一,顺序完全乱了,第二变量没有做严格的筛分。

怎么避免这种情况呢?我们在函数的内部做一个判断,如果符合我们的设定,则运行我们的功能代码,否则,输出字符串错误,或者pass。

实例2

def func(name,age):

if isinstance(name,str):

if isinstance(age,int):

print('My name is {0},i am {1} year old'.format(name,age))

else:

print('这个年龄不是正确的格式!')

else:

print('这个名字不是正确的格式!')

#    需要指出的是isinstance(v1,type)函数是指判断某个变量的值和type(数据的类型)是否相同,相同返回True,不同返回False。

#    两个判断,一个对name是否为str字符串类型进行判断,另一个对age是否为int整数类型进行判断。如果都成立了,则运行功能代码print(xxx)。

# 这里我在补充一点,函数可以返回多个值

def    函数名称(位置参数1、位置参数2、......):

        语句1

        语句2

        ......

        return  v1,v2,v3, ...

# 实例3

def func():

pass

return 'aa','bb','cc',123,456 

a=func()

print(a)

print('----------------------------')

print(type(a))

>>>

    ('aa', 'bb', 'cc', 123, 456)       #输出的结果

    ----------------------------              #输出的结果

    <class 'tuple'>                         #输出的结果

# 我们可以看到,确实是返回了几个值。同时这些值的类型是tuple(以后会讲到的)

(2)默认参数

默认参数就是在调用函数的时候可以不给这个默认参数赋值,这个参数在定义的时候就默认给赋值了,但是我们想另外赋值也是可以的。以前我们一直用的print()就是一个内置函数,一般的情况下,只给一个值,就是想输出的内容(字符串、整数、list....)例:print('这就是我想输出的内容')其实,print()内置函数定义的时候,是有几个参数,只不过我们几乎不用。我们使用help(print)来看看他的具体参数。 print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

#语法

函数名称(参数1,参数2,参数3='python')

我们就以end='\n'为例,这就是一个典型的默认函数。print函数在定义的时候就已经给end赋值为 '\n','\n' 是什么呢?是换行符的意思。print() 函数默认的情况下是自动换行的。但是,我们也可以给end赋值为 ' ' 空,让它不换行。

#    实例1

print('这个是换行的')

>>>这个是换行的

                    #这个新的一行

#    实例2

print('这个是不换行的',end=' ')

>>>这个是不换行的

#    实例3

#演示默认函数的定义与调用

def func(name,age,sex='man'):

print('name:{0}    age:{1}    sex:{2}'.format(name,age,sex))

func('wangwu',38)

>>>name:wangwu    age:38    sex:man

func('xiaomei',19,sex='girl')

>>>name:xiaomei    age:19    sex:girl

#   这个func()函数在定义的时候,就给sex赋值为字符串 'man',调用的时候,如果在sex的相应位置没有值,则sex的值默认为字符串 'man'。如果调用的时候,给sex赋值的话,此时,默认函数sex在定义时候的值 'man'已经无效了,sex的值为字符串 'girl'。

在定义函数的时候,我们给某个参数赋值,这个参数就变成默认参数了。调用函数的时候,如果不给默认参数赋值,则默认函数的值为定义函数时候的默认值。如果在调用函数的时候,给默认函数赋值,则默认函数的值为最新赋的值。

*这里我们要注意,默认参数的位置在所有参数的最后面。

关注公众号,了解更多!

猜你喜欢

转载自www.cnblogs.com/pyshadow/p/10399925.html
今日推荐