ทำความรู้จักกับภาษา python (21) : ขอบเขตของตัวแปรฟังก์ชัน

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderator: mindphp, ผู้ดูแลกระดาน

dawthana
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 604
ลงทะเบียนเมื่อ: 07/12/2016 10:55 am

ทำความรู้จักกับภาษา python (21) : ขอบเขตของตัวแปรฟังก์ชัน

โพสต์โดย dawthana » 11/01/2017 6:13 pm

ขอบเขตของตัวแปรฟังก์ชันในภาษา python (ไพทอน) แบ่งออกเป็น 2 ชนิด

- ตัวแปรชนิด Global (โกลบอล) คือตัวแปรที่มีขอบเขตกว้าง สามารถใช้งานได้ทุกส่วนของโปรแกรม
- ตัวแปรชนิด Local (โลคอล) คือตัวแปรที่มีขอบเขตแคบ ใช้งานได้เฉพาะภายในฟังก์ชันนั้นๆ

ตัวอย่างขอบเขตตัวแปร Global และ Local ที่มีชื่อตัวแปรเหมือนกัน
จะเห็นว่าถึงตัวแปรจะชื่อเดียวกันแต่ผลลัพธ์ที่ได้มีค่าไม่เท่ากัน เพราะเรื่องของขอบเขตตัวแปร Global และ Local
gl1.png
gl1.png (43.48 KiB) เปิดดู 187 ครั้ง


ตัวอย่างขอบเขตของตัวแปร Global และ Local ที่มีชื่อตัวแปร Global ซ้ำ
gl2.png
gl2.png (50.56 KiB) เปิดดู 187 ครั้ง


ตัวอย่างขอบเขตของตัวแปร Global และ Local ที่ส่งค่า Global แล้วกำหนดเป็น Local ซ้ำ
จะเห็นว่า ตัวแปร a มีค่าเปลี่ยนแปลงเพราะกำหนดให้เป็น local อีกครั้ง ตัวแปร b มีค่าเท่าเดิมเพราะยังคงเป็นตัวแปร Global อยู่
gl3.png
gl3.png (59.76 KiB) เปิดดู 187 ครั้ง


ตัวอย่างขอบเขตของตัวแปร Global และ Local ที่ส่งค่า Global แล้ว return เป็น Local

gl4.png
gl4.png (53.2 KiB) เปิดดู 187 ครั้ง


ศึกษาข้อมูลมากจาก https://www.youtube.com/watch?v=9KP4C9g3ys8&list=PLLi1ciqQAf8TVFbJpl7XY23lzdKrpxsMM&index=21

dawthana
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 604
ลงทะเบียนเมื่อ: 07/12/2016 10:55 am

Re: ทำความรู้จักกับภาษา python (21) : ขอบเขตของตัวแปรฟังก์ชัน

โพสต์โดย dawthana » 11/01/2017 6:14 pm

สามารถศึกษาข้อมูลเพิ่มเติมได้ที่ http://www.mindphp.com/vdo-tutorial-python/3387-python-tutorial-21-function.html

ภาพประจำตัวสมาชิก
Dive Demo
PHP Sr. Member
PHP Sr. Member
โพสต์: 84
ลงทะเบียนเมื่อ: 01/02/2017 11:10 am

Re: ทำความรู้จักกับภาษา python (21) : ขอบเขตของตัวแปรฟังก์ชัน

โพสต์โดย Dive Demo » 03/02/2017 5:11 pm

ในหัวข้อนี้คือต้องตระหนักถึงตำแหน่งของ ตัวแปร Global และ Local เป็นสำคัญเพราะมีผลในการประมวลผลของระบบ

Four
PHP Super Member
PHP Super Member
โพสต์: 407
ลงทะเบียนเมื่อ: 08/01/2018 9:55 am

Re: ทำความรู้จักกับภาษา python (21) : ขอบเขตของตัวแปรฟังก์ชัน

โพสต์โดย Four » 23/01/2018 4:32 pm

โค้ด: เลือกทั้งหมด

def func():
    a = 1
    b = 2
    print("local A", a)
    print("local B", b)

a = 10
b = 20
print("local A", a)
print("local B", b)
func()
print("local A", a)
print("local B", b)


ผลรัน

รูปภาพ

ภาพประจำตัวสมาชิก
Jom07
PHP Super Member
PHP Super Member
โพสต์: 479
ลงทะเบียนเมื่อ: 08/01/2018 9:56 am

Re: ทำความรู้จักกับภาษา python (21) : ขอบเขตของตัวแปรฟังก์ชัน

โพสต์โดย Jom07 » 25/01/2018 1:13 am

โค้ด: เลือกทั้งหมด

total = 0
def test(a,b,c):
    total = a + b + c
    print('แสดงผลรัน local = ', total)
    return total

total = 30
test(10,20,30)
print('แสดงผล global =',total)


ผลรัน

รูปภาพ
รูปภาพ

Patcharanan.0399
PHP Hero Member
PHP Hero Member
โพสต์: 114
ลงทะเบียนเมื่อ: 09/04/2018 10:04 am

Re: ทำความรู้จักกับภาษา python (21) : ขอบเขตของตัวแปรฟังก์ชัน

โพสต์โดย Patcharanan.0399 » 21/04/2018 11:30 am

โค้ด: เลือกทั้งหมด

total = 0
def mysum(arg1, arg2, arg3):
    total = arg1 + arg2 + arg3
    print 'Local is : ', total
    return total

mysum(15, 25, 35)
print 'Globle is : ', total

ผลการรัน
Global.JPG
ตัวแปรมีค่าไม่เท่ากัน แม้ว่าจะเป็นชื่อเดียวกัน เพราะเรื่องขอบเขตของตัวแปร Global กับ Local
Global.JPG (10.65 KiB) เปิดดู 34 ครั้ง


โค้ด: เลือกทั้งหมด

total = 0
def mysum(arg1, arg2, arg3):
    total = arg1 + arg2 + arg3
    print 'Local is : ', total
    return total

total = 30
mysum(15, 25, 35)
print 'Globle is : ', total

ผลการรัน
Global1.JPG
เมื่อมีชื่อตัวแปร Global ซ้ำ จะเท่ากับค่าที่กำหนดไว้ล่าสุด
Global1.JPG (11.08 KiB) เปิดดู 34 ครั้ง



ศึกษาจาก https://youtu.be/9KP4C9g3ys8

rangsan
PHP Hero Member
PHP Hero Member
โพสต์: 158
ลงทะเบียนเมื่อ: 30/04/2018 9:44 am

Re: ทำความรู้จักกับภาษา python (21) : ขอบเขตของตัวแปรฟังก์ชัน

โพสต์โดย rangsan » 03/05/2018 1:55 pm

ขอบเขตของตัวแปรฟังก์ชัน

โค้ด: เลือกทั้งหมด

total = 0
def mySum(arg1,arg2,arg3):
    total1 = arg1+arg2+arg3
    total2 = arg1*arg2-arg3
    total = total1+total2
    print 'Value Total in Local  : ',total
    return total

total = 20
mySum(2,3,4)
print '--------------------------'
print 'Value Total in Global : ',total


ผลลัพธ์การรันโค้ด
ขอบเขตของตัวแปรฟังก์ชัน.png
ขอบเขตของตัวแปรฟังก์ชัน.png (17.62 KiB) เปิดดู 12 ครั้ง


จะเห้นได้ว่าตัวแปรของ total ในแบบ Local และ total ในแบบ Global นั้นมีค่าที่ต่างกันถึงแม้ว่าจะมีการ return ค่าออกมาแต่เราไม่ได้เอาค่านั้นมาทำงานต่อแต่อย่างใดค่า total ในแบบ Global จึงมีค่าเท่ากับ 20 เพราะมีการประกาศค่าซ้ำอีกครั้ง

ศึกษาจาก : https://www.youtube.com/watch?v=9KP4C9g3ys8
It’s never too late to start again.


ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 4 และ บุคคลทั่วไป 0 ท่าน