Python
ฟังก์ชั่น
ฟังก์ชั่น เป็นโปรแกรม หรือส่วนของโปรแกรมที่ทำหน้าที่อย่างใดอย่างหนึ่งโดยเฉพาะ ซึ่งในภาษาคอมพิวเตอร์จะแยกฟังก์ชั่นเป็น 2 กลุ่ม คือกลุ่มของฟังก์ชั่นมาตรฐานของภาษา และ ฟังก์ชั่นที่ผู้เขียนโปรแกรมสร้างขึ้น โดยฟังก์ชั่นมาตรฐานนี้มักจะเป็นกลุ่มของคำสั่งที่ใช้งานมากๆ ซึ่งภาษาคอมพิวเตอร์จะเตรียมฟังก์ชั่นเหล่านี้ไว้เพื่อให้ผู้เขียนโปรแกรมใช้งาน โดยไม่จำเป็นต้องเขียนฟังก์ชั่นเหล่านั้นเอง แต่ในบางกรณี งานที่ผู้เขียนโปรแกรมต้องการใช้งานอาจไม่มีในฟังก์ชั่นมาตรฐาน ก็อาจเขียนฟังก์ชั่นเหล่านั้นขึ้นมาใช้งานเพิ่มเติมก็ได้ สำหรับฟังก์ชั่นมาตรฐานในภาษาไพธอนที่มีการใช้งานมากๆ มีดังนี้
• ฟังก์ชั่น input()
โปรแกรมคอมพิวเตอร์จำเป็นต้องมีการรับข้อมูลเพื่อนำมาใช้ในการดำเนินการต่างๆตามคำสั่งที่อยู่ในโปรแกรม โดยการรับข้อมูลนั้นอาจรับมาจากแหล่งป้อนข้อมูลต่างๆ เช่น แป้นพิมพ์ ดิสก์ หรืออุปกรณ์นำเข้าข้อมูลอื่นๆ แต่เนื่องจากอุปกรณ์ที่เป็นมาตรฐานและมีการใช้ในการป้อนข้อมูลส่วนใหญ่จะเป็นแป้นพิมพ์ ภาษาไพธอนจึงเตรียมฟังก์ชั่น input() เพื่อการรับข้อมูลจากแป้นพิมพ์ให้ใช้งาน โดยเมื่อมีการเรียกช้านฟังก์ชั่น input() จะมีการรอรับข้อมูล โดยสามารถกำหนดข้อความที่ต้องการแสดงเพื่อรอรับข้อมูลหรือไม่ก็ได้ เช่น
name = input('May I know your name? ')
print('It’s a pleasure to meet you ' + name + '!')
age = input('Your age, please? ')
print('So, you’re ' + age + ' years old, ' + name + '!')
ซึ่งจะได้ผลลัพธ์เป็น
May I know your name? jojo
It’s a pleasure to meet you jojo!
Your age, please? 23
So, you’re 23 years old, jojo!
• ฟังก์ชั่น range()
ฟังก์ชั่น range() เป็นฟังก์ชั่นเพื่อการดำเนินการกับลำดับของกลุ่มข้อมูล หรือตัวแปร ในการใช้งานมักจะมีการใช้งานร่วมกับการทำซ้ำแบบ for โดยสามารถกำหนดจำนวนสมาชิกที่ต้องการได้ ดังนี้
>>> range(5)
range(0, 5)
>>>
เป็นการกำหนดสมาชิกจำนวน 5 ลำดับ โดยเริ่มต้นจาก 0, 1, 2, 3 และ 4 และสามารถแสดงสมาชิกได้โดยฟังก์ชั่น list เช่น
>>> list(range(5))
[0, 1, 2, 3, 4]
>>>
เราสามารถกำหนดลำดับที่เริ่มต้นของ range() ได้โดยระบุลำดับที่เริ่มต้น และลำดับที่สิ้นสุด รวมถึงระยะห่างระหว่างแต่ละลำดับ หากไม่มีการกำหนดระยะห่างจะถือว่ามีระยะห่างเป็น 1 เช่น
>>> list(range(3,8))
[3, 4, 5, 6, 7]
>>>
>>> list(range(3,8,2))
[3, 5, 7]
>>>
สำหรับการใช้งานฟังก์ชั่น range() ร่วมกับการทำซ้ำ มีตัวอย่างดังนี้
>>> for i in range(2,9):
print (i)
ซึ่งจะได้ผลลัพธ์เป็น
2
3
4
5
6
7
8
>>>
• ฟังก์ชั่น print()
ในไพธอนรุ่นที่ 3.x ได้ปรับเปลี่ยนคำสั่ง print เป็นฟังก์ชั่นมาตรฐาน ดังนั้นในการเรียกใช้งานฟังก์ชั่น print จะต้องเรียกใช้งานในรูปแบบของฟังก์ชั่น นั่นคือต้องมีเครื่องวงเล็บเปิดและปิด โดยมีข้อมูล หรือตัวแปรอยู่ภายในวงเล็บ เช่น
>>> print('This is python ')
This is python
>>> print(5)
5
>>> a = 10
>>> print(a)
10
>>>
นอกจากนี้แล้วยังมีฟังก์ชั่นมาตรฐานอื่นๆ ให้ใช้งานอีกมาก โดยฟังก์ชั่นมาตรฐานของไพธอนที่มีการใช้งานบ่อยๆ นอกเหนือจากที่กล่าวมาข้างต้น โดยผู้เขียนจะนำเสนอรายละเอียดและตัวอย่างการใช้งาน เพื่อใช้เป็นแหล่งอ้างอิงเมื่อต้องการใช้งาน ซึ่งผู้อ่านอาจข้ามรายละเอียดส่วนนี้ไปก่อนก็ได้
• abs()
แสดงค่าสัมบูรณ์ของข้อมูล หรือตัวแปร
>>>abs(5)
5
>>>abs(-5)
5
• all()
แสดงค่าความจริงของตัวแปร โดยให้ค่าเป็นจริงหากตัวแปรทั้งหมดมีค่าความจริงเป็นจริง
>>> a = [1<2, 2<3]
>>> all(a)
True
>>> a = [1<2, 2<3, 4<3]
>>> all(a)
False
>>>
• any()
แสดงค่าความจริงของตัวแปร โดยให้ค่าเป็นจริงหากมีตัวแปรอย่างน้อย 1 ตัว มีค่าความจริงเป็นจริง
>>> a = [1<2, 5<3, 4<3]
>>> any(a)
True
>>>
• ascii()
แสดงรหัสแอสกีของข้อมูล หรือตัวแปรที่ระบุ
>>> a = [1<2, 5<3, 4<3]
>>>asci(a)
[True, True, False]'
>>>asci(5)
'5'
• bin()
แสดงเลขฐานสองของข้อมูลที่ระบุ
>>> bin(12345)
'0b11000000111001'
>>>
• chr()
แสดงอักขระยูนิโคดที่กำหนด
>>> chr(255)
'ÿ'
>>> chr(47)
'/'
>>> chr(75)
'K'
>>>
• float()
แสดงค่าจำนวนจริงของข้อมูลตัวเลขที่กำหนด
>>> float(3)
3.0
>>>
• hex()
แสดงเลขฐานสองสิบหกของข้อมูลที่ระบุ
>>> hex(12345)
'0x3039'
>>>
• id()
แสดงรหัสประจำตัวของวัตถุที่ระบุ ซึ่งเป็นรหัสที่ใช้ในการอ้างอิง และใช้งานวัตถุนั้น (ในบางภาษา เช่น CPython จะใช้ตำแหน่งหน่วยความจำที่จัดเก็บวัตถุนั้นเป็นรหัสประจำตัว)
>>> a=6
>>> id(a)
140730810557424
<--ผลลัพธ์ในแต่ละเครื่องจะแตกต่างกัน
>>>
• int()
แสดงค่าจำนวนเต็มของข้อมูลที่ระบุ
>>> a=3.4567
>>> int(a)
3
>>>
• len()
แสดงขนาด หรือจำนวนสมาชิกในข้อมูล หรือตัวแปรที่ระบุ
>>> a = [1,2,3]
>>> len(a)
3
>>>
>>> s = 'abcdefghijk'
>>> len(s)
11
>>>
• max()
แสดงค่าที่มากที่สุดในกลุ่มข้อมูลหรือตัวแปรที่ระบุ
>>> a=(1,2,3)
>>> max(a)
3
>>>
• min()
แสดงค่าที่น้อยที่สุดในกลุ่มข้อมูลหรือตัวแปรที่ระบุ
>>> a=(1,2,3)
>>> min(a)
1
>>>
• oct()
แสดงเลขฐานสองสิบหกของข้อมูลที่ระบุ
>>> oct(12345)
'0o30071'
>>>
• ord()
แสดงค่าประจำตัวของอักขระที่กำหนด
>>> ord('a')
97
>>>
• pow()
แสดงเลขยกกำลัง
>>> pow(2,3)
8
>>>
• repr()
แสดงสายอักขระของขอมูลหรือตัวแปรที่ระบุ
>>> a ='aaa'
>>> repr(a)
"'aaa'"
>>>
• round()
แสดงจำนวนเต็มโดยมีการปัดเศษขึ้น หรือลง
>>> round(1234.5678)
1235
>>> round(1234.1234)
1234
>>>
• str()
แสดงข้อมูลที่ระบุในรูปแบบของสายอักขระ
>>> str(1234)
'1234'
>>> str('abc')
'abc'
>>>
• sum()
แสดงผลรวมของกลุ่มข้อมูลที่กำหนด
>>> a = (1,2,3)
>>> sum(a)
6
>>>
นอกจากฟังก์ชั่นมาตรฐานที่กล่าวมาข้างต้นแล้ว ไพธอนยังได้เตรียมฟังก์ชั่นมาตรฐานที่ทำงานก้านอื่นๆ ให้ใช้งานอีกจำนวนมาก โดยผู้เขียนโปรแกรมสามารถเลือกใช้งานฟังก์ชั่นเหล่านั้นได้ตามลักษณะของงานที่ต้องการได้ สำหรับการแสดงฟังก์ชั่นมาตรฐานทั้งหมดของภาษาไพธอนสามารถทำได้โดยใช้ฟังก์ชั่น dir ดังนี้
>>> dir(__builtins__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError',
'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis',
'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning',
'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError',
'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning',
'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration',
'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError',
'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError',
'__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes',
'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format',
'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next',
'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type',
'vars', 'zip']
>>>
และหากต้องการดูรายละเอียดและรูปแบบการใช้งานฟังก์ชั่นสามารถทำได้โดยใช้ฟังก์ชั่น help() ดังนี้
>>> help(bin)
Help on built-in function bin in module builtins:
bin(number, /)
Return the binary representation of an integer.
>>> bin(2796202)
'0b1010101010101010101010'
>>>
<-คำสั่งดำเนินการ การตรวจสอบเงื่อนไข->
ถาม-ตอบ
aYlNlfdX Oct. 14, 2023, 1:57 a.m.
aYlNlfdX Oct. 14, 2023, 1:58 a.m.
aYlNlfdX Oct. 14, 2023, 1:58 a.m.
aYlNlfdX Oct. 14, 2023, 2:07 a.m.
aYlNlfdX Oct. 14, 2023, 2:07 a.m.
aYlNlfdX Oct. 14, 2023, 2:07 a.m.
aYlNlfdX Oct. 14, 2023, 2:07 a.m.
aYlNlfdX Oct. 14, 2023, 2:07 a.m.
aYlNlfdX Oct. 14, 2023, 2:07 a.m.
aYlNlfdX Oct. 14, 2023, 2:07 a.m.
aYlNlfdX Oct. 14, 2023, 2:07 a.m.
aYlNlfdX Oct. 14, 2023, 2:07 a.m.
nZkkAbWB Jan. 22, 2024, 2:43 p.m.
nZkkAbWB Jan. 22, 2024, 2:43 p.m.
nZkkAbWB Jan. 22, 2024, 2:43 p.m.
nZkkAbWB Jan. 22, 2024, 2:43 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:44 p.m.
nZkkAbWB Jan. 22, 2024, 2:46 p.m.
nZkkAbWB Jan. 22, 2024, 2:46 p.m.
nZkkAbWB Jan. 22, 2024, 2:46 p.m.
nZkkAbWB Jan. 22, 2024, 2:46 p.m.
nZkkAbWB Jan. 22, 2024, 2:46 p.m.
nZkkAbWB Jan. 22, 2024, 2:46 p.m.
nZkkAbWB Jan. 22, 2024, 2:46 p.m.
nZkkAbWB Jan. 22, 2024, 2:46 p.m.
nZkkAbWB Jan. 22, 2024, 2:46 p.m.
nZkkAbWB Jan. 22, 2024, 2:46 p.m.
nZkkAbWB Jan. 22, 2024, 2:46 p.m.
nZkkAbWB Jan. 22, 2024, 2:47 p.m.
nZkkAbWB Jan. 22, 2024, 2:47 p.m.
nZkkAbWB Jan. 22, 2024, 2:47 p.m.
nZkkAbWB Jan. 22, 2024, 2:47 p.m.
nZkkAbWB Jan. 22, 2024, 2:47 p.m.
nZkkAbWB Jan. 22, 2024, 2:47 p.m.
nZkkAbWB Jan. 22, 2024, 2:48 p.m.
nZkkAbWB Jan. 22, 2024, 2:48 p.m.
nZkkAbWB Jan. 22, 2024, 2:48 p.m.
nZkkAbWB Jan. 22, 2024, 2:48 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:04 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:05 p.m.
nZkkAbWB Jan. 22, 2024, 3:06 p.m.
nZkkAbWB Jan. 22, 2024, 3:06 p.m.
nZkkAbWB Jan. 22, 2024, 3:06 p.m.
nZkkAbWB Jan. 22, 2024, 3:06 p.m.
nZkkAbWB Jan. 22, 2024, 3:06 p.m.
nZkkAbWB Jan. 22, 2024, 3:06 p.m.
nZkkAbWB Jan. 22, 2024, 3:07 p.m.
nZkkAbWB Jan. 22, 2024, 3:07 p.m.
nZkkAbWB Jan. 22, 2024, 3:07 p.m.
nZkkAbWB Jan. 22, 2024, 3:07 p.m.
nZkkAbWB Jan. 22, 2024, 3:07 p.m.
nZkkAbWB Jan. 22, 2024, 3:07 p.m.
nZkkAbWB Jan. 22, 2024, 3:07 p.m.
nEcdyGgx Nov. 3, 2024, 10:28 a.m.
nEcdyGgx Nov. 3, 2024, 10:28 a.m.
nEcdyGgx Nov. 3, 2024, 11:20 a.m.
nEcdyGgx Nov. 3, 2024, 11:20 a.m.
nEcdyGgx Nov. 3, 2024, 11:22 a.m.
nEcdyGgx Nov. 3, 2024, 11:22 a.m.
nEcdyGgx Nov. 3, 2024, 11:54 a.m.
nEcdyGgx Nov. 3, 2024, 11:54 a.m.
nEcdyGgx Nov. 3, 2024, 5:44 p.m.
nEcdyGgx Nov. 3, 2024, 5:44 p.m.
nEcdyGgx Nov. 3, 2024, 6:53 p.m.
nEcdyGgx Nov. 3, 2024, 6:53 p.m.
Login Required! AnonymousUser