码迷,mamicode.com
首页 > 其他好文 > 详细

初识函数

时间:2019-02-04 18:14:04      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:组成   ret   mat   接收   set   小知识点   地方   ssm   数据   

#函数
#可读性强,复用性强
#函数定义:定义了之后,可以在任何需要的地方调用
#格式: def 函数名(): 例子:def mylen():
# 没有返回长度,只能单纯的打印
# return 返回值的重要性 定义了一个函数,建议都带一个返回值,不然无法进行赋值
#完整例子:def 函数名():
# 函数体
# return 返回值

# #定义函数后,无返回值
# s = ‘杰瑞你好啊‘
# def mylen():
# n = 0
# for i in s :
# n += 1
# print(n)
# mylen()
# len1 = mylen()
# print(len1)
#
# #定义函数后,有返回值
# s = ‘杰瑞你好啊‘
# def mylen():
# n = 0
# for i in s :
# n += 1
# print(n)
# return n
#
# len1 = mylen()
# print(len1)

#返回值
#返回值的三种情况
# 没有返回值 ---当没有返回值的时候默认返回None
# 不写return
# 直接写return 不加值,结束一个函数的继续,即return后面的都不执行了
# return None --- 不常用
# 返回1个值
# 可以返回任意一种数据类型
# 只要返回就可以接受到
# 如果在一个程序种有多个retrun,那么只执行第一个
# 返回多个值
# 多个返回值用多个变量接收,有多少返回值就用多少变量接收。
# 用一个变量接受:得到的是一元组,元组为不可以变数据类型

# 没有返回值
# def test():
# l = [‘jerry‘,‘tom‘]
# for i in l:
# print(i)
# #return
# #retrun None
# test()

#返回一个值
# def test():
# l = [‘jerry‘,‘tom‘]
# a = {}
# for i in l:
# a.setdefault(i)
# return a
#
# test = test()
# print(test)

#返回多个值
# def test():
# l = [‘jerry‘,‘tom‘]
# a = {}
# for i in l:
# a.setdefault(i)
# return a,l
#
# test = test()
# print(test)

# 小知识点:传递参数
# 定义一个函数并赋予参数
# 没定义参数时,只能计算指定的变量名
# 定义参数后,可以计算任意的值
# 没定义参数
# s = ‘你好啊‘
# def my_len():
# i = 0
# for k in s:
# i+=1
# return i
#
# ret = my_len()
# print(ret)

#定义参数
# s1 = ‘你好哈‘
# def my_len1(a): # 自定义参数只需要0个参数,接受参数,形式参数:形参
# i = 0
# for k in a: # a 必须和形参是一致的
# i += 1
# return i
#
# ret1 = my_len1(s1) # 传递参数:传参,实际参数:实参
# ret2 = my_len1(‘你是谁啊‘) # 传递参数
# print(ret1,ret2)

#参数的语法---写在括号内的值

#参数
# 没有参数
# 定义函数和调用函数时括号里都不写内容
# 有一个参数
# 传什么就是什么
# 有多个参数
# 位置参数
# 站在实参的角度上:
# 按照位置传参
# 按照关键字传参
# 混着用也可以,但是必须先按照位置传参,再按照关键字传参,不能同时给一个变量传多个值

#典型传输多个参数:典型的位置参数
# def my_sum(a,b):
# c = a + b
# return c
#
# ret = my_sum(1,2) # 位置传参
# ret2 = my_sum(a=2,b=1) # 关键字传参
# print(ret,ret2)

# def classmate(name,sex=‘men‘): # 默认参数 sex = ‘men‘
# print(‘%s : %s‘%(name,sex))
#
# classmate(‘jerry‘)
# classmate(‘jerry‘)
# classmate(‘Amy‘,‘woman‘) # 若有参数,则修改默认参数
# classmate(‘jerry‘)

# 站再形参的角度上:
# 位置参数:必须传,且不能多传以及少传
# 默认参数:可以不传,如果不写则使用默认参数,若写了就用设置的参数替换默认参数

# 只有调用函数的时候
# 按照位置传:直接写参数的值
# 按照关键字传: 关键字 = 值 如 open( file, encoding = ‘utf-8‘)

# 定义函数的时候:
# 位置参数:直接定义参数
# 默认参数: 关键字参数: 参数名 = ‘默认值’
# 动态参数: 可以接受任意多个参数
# 在定义参数的时候 前面加多个* 例子:def my_len(*aaaa)
# 约定俗成 都是以 *args 为动态参数
# 顺序:先定义位置参数,*args,再设置默认参数,最后**kwargs
# 动态参数有两种
# *args: 接收的是按照位置传参的值,组成一个元组
# **kwargs:接收的是关键字传参的值,组曾一个字典

# 按照位置传参
# def classmate(*args): # 默认参数 sex = ‘men‘
# n = 0
# for i in args:
# n += i
# return n
#
# print(classmate(1,2))
# print(classmate(1,2,3))
# print(classmate(1,2,3,4))

# 按照关键字传参
# def func(**kwargs):
# print(kwargs)
#
# func(a = 1,b=2,c=3)
# func(b=2,c=3)
# func(c=3)

# 动态参数的另一种传参方式
# def func(*args): # 站在形参的角度上,给变量加上*,就是组合所有传来的值
# print(args)
#
# func(1,2,3,4,5,6)
# l = [2,1,3,6,5,2]
# func(*l) # 站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散

# def func(**kwargs):
# print(kwargs)
#
# func(a=1,b=2)
# d = {‘a‘:1,‘b‘:2}
# func(**d)

#函数的注释
def func():
‘‘‘
这个函数实现了什么功能
参数1:
参数2:
:return:
‘‘‘
pass

#默认参数的陷阱
#如果默认参数的的值是一个可变数据类型,那么每次调用函数时,如果不传值就公用这个 数据类型的资源
def test(l= []):
l.append(1)
print(l)

test()
test()
test()
test([])
test()

def test1(dic = {}):
dic[‘k‘] = ‘v‘
print(dic)

test1()
test1()
test1()
test1()

def test1(k,dic = {}):
dic[k] = ‘v‘
print(dic)

test1(1)
test1(2)
test1(3)
test1(4)

初识函数

标签:组成   ret   mat   接收   set   小知识点   地方   ssm   数据   

原文地址:https://www.cnblogs.com/Jerry2019/p/10351923.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!