python基础之函数

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/8/22 15:39
# @Author  : limingyu
# @Site    : 
# @File    : Test_Function.py
# @Software: PyCharm
#函数传参数几种形式
#1、普通参数(严格按顺序来,将实际参数赋值给形式参数)
#2、默认参数(必须放置在参数列表的最后)
#3、指定参数(将实际参数赋值给指定的形式参数)
#4、动态参数:*形参数(定义函数时有*,普通传值,将传入的所有值放到元组中,当做一个元素
#              传值时加上*,将每一个元素转化到元组的元素里,内部有个for循环,循环每个元素到元组中)
#             *   默认将传入的参数,全部放置在元组中,f1(*[12,3,4])
#             **  默认将传入的参数,全部放置在字典中 f1(**{'k1':'v1','k2':'v2'})
#5、万能参数

# *形参数
def f1(*args):
    print(args,type(args))

f1(11) #(11,) <class 'tuple'>
li = [1,2,"liming","dd"]

f1(li)  #([1, 2, 'liming', 'dd'],) <class 'tuple'>
f1(*li) #(1, 2, 'liming', 'dd') <class 'tuple'>
li = "liming"
f1(*li) #('l', 'i', 'm', 'i', 'n', 'g') <class 'tuple'>

# ** 形参数:
def f1(**args):
    print(args,type(args))

f1(n1="liming" ,n2=18) #{'n1': 'liming', 'n2': 18} <class 'dict'>
dic = {'k1':'v1','k2':'v2'}
f1(kk=dic)  #{'kk': {'k1': 'v1', 'k2': 'v2'}} <class 'dict'>
#f1(dic) #TypeError: f1() takes 0 positional arguments but 1 was give
#循环每一个k,v,直接赋值
f1(**dic) #{'k1': 'v1', 'k2': 'v2'} <class 'dict'>

#*放在前面,**放在后面
def f2(*args, **kwargs):
    print(args)
    print(kwargs)
f2(11,22,33,k1='v1',k2='v2')
#(11, 22, 33)
#{'k1': 'v1', 'k2': 'v2'}


#格式化两种方式
#1、"%s,%d"
#2、str format格式化输出,用占位符;def format(*args, **kwargs):

s1 = 'i am {0},age {1}'.format("liming",15)
print(s1) #i am liming,age 15
s2 = 'i am {0},age {1}'.format(*["liming",15])
print(s2) #i am liming,age 15

s1 = "i am {name},age {age}".format(name='liming',age=15)
print(s1) #i am liming,age 15
dic = {'name':'liming',"age":15}
s2 = "i am {name},age {age}".format(**dic)
print(s2) #i am liming,age 15


#函数补充1:有相同的函数,如何执行?
def f1(a1,a2):
    return a1 + a2

def f1(a1,a2):
    return a1 * a2

ret = f1(8,8)
print(ret)  #64

##函数补充2:函数传参时,传的是引用
def f1(a1):
    a1.append(999)

li = [11,22,33,44]
f1(li)
print(li)  #[11, 22, 33, 44, 999]

#函数补充3:全局变量,所有作用域可读,全部大写
#对全局变量进行重新赋值,需要global
#特殊:字典,列表,可修改,不可重新赋值
NAME = "liming"
LI = [11,22,33,44]
def f1():
    age = 14
    global NAME #表示name是一个全局变量
    NAME = "xiaoran" #对全局变量进行更改
    LI.append(777)
    #li = 2222 #不能赋值
    print(NAME,age,LI)

def f2():
    age = 17
    print(NAME,age)

f1() #xiaoran 14 [11, 22, 33, 44, 777]
f2() #xiaoran 17

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值